Cara mengimplementasikan anggota antarmuka secara eksplisit (Panduan Pemrograman C#)
Contoh ini mendeklarasikan antarmuka, IDimensions
, dan kelas, Box
, yang secara eksplisit mengimplementasikan anggota antarmuka GetLength
dan GetWidth
. Anggota diakses melalui instans antarmuka dimensions
.
Contoh
interface IDimensions
{
float GetLength();
float GetWidth();
}
class Box : IDimensions
{
float lengthInches;
float widthInches;
Box(float length, float width)
{
lengthInches = length;
widthInches = width;
}
// Explicit interface member implementation:
float IDimensions.GetLength()
{
return lengthInches;
}
// Explicit interface member implementation:
float IDimensions.GetWidth()
{
return widthInches;
}
static void Main()
{
// Declare a class instance box1:
Box box1 = new Box(30.0f, 20.0f);
// Declare an interface instance dimensions:
IDimensions dimensions = box1;
// The following commented lines would produce compilation
// errors because they try to access an explicitly implemented
// interface member from a class instance:
//System.Console.WriteLine("Length: {0}", box1.GetLength());
//System.Console.WriteLine("Width: {0}", box1.GetWidth());
// Print out the dimensions of the box by calling the methods
// from an instance of the interface:
System.Console.WriteLine("Length: {0}", dimensions.GetLength());
System.Console.WriteLine("Width: {0}", dimensions.GetWidth());
}
}
/* Output:
Length: 30
Width: 20
*/
Pemrograman yang Kuat
Perhatikan bahwa baris berikut, dalam metode
Main
, dikomentari karena akan menghasilkan kesalahan kompilasi. Anggota antarmuka yang diterapkan secara eksplisit tidak dapat diakses dari instans kelas://System.Console.WriteLine("Length: {0}", box1.GetLength()); //System.Console.WriteLine("Width: {0}", box1.GetWidth());
Perhatikan juga bahwa baris berikut, dalam metode
Main
, berhasil mencetak dimensi kotak karena metode dipanggil dari instans antarmuka:System.Console.WriteLine("Length: {0}", dimensions.GetLength()); System.Console.WriteLine("Width: {0}", dimensions.GetWidth());
Lihat juga
Berkolaborasi dengan kami di GitHub
Sumber untuk konten ini dapat ditemukan di GitHub, yang juga dapat Anda gunakan untuk membuat dan meninjau masalah dan menarik permintaan. Untuk informasi selengkapnya, lihat panduan kontributor kami.