Så här implementerar du explicit gränssnittsmedlemmar (C#-programmeringsguide)
I det här exemplet deklareras ett gränssnitt, IDimensions
, och en klass, Box
, som uttryckligen implementerar gränssnittsmedlemmarna GetLength
och GetWidth
. Medlemmarna nås via gränssnittsinstansen dimensions
.
Exempel
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
*/
Robust programmering
Observera att följande rader i
Main
metoden kommenteras ut eftersom de skulle generera kompileringsfel. En gränssnittsmedlem som uttryckligen implementeras kan inte nås från en klassinstans ://System.Console.WriteLine("Length: {0}", box1.GetLength()); //System.Console.WriteLine("Width: {0}", box1.GetWidth());
Observera också att följande rader i
Main
-metoden kan skriva ut rutans dimensioner eftersom metoderna anropas från en instans av gränssnittet:System.Console.WriteLine("Length: {0}", dimensions.GetLength()); System.Console.WriteLine("Width: {0}", dimensions.GetWidth());
Se även
Samarbeta med oss på GitHub
Källan för det här innehållet finns på GitHub, där du även kan skapa och granska ärenden och pull-begäranden. Se vår deltagarguide för mer information.