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(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:
//Console.WriteLine($"Length: {box1.GetLength()}");
//Console.WriteLine($"Width: {box1.GetWidth()}");
// Print out the dimensions of the box by calling the methods
// from an instance of the interface:
Console.WriteLine($"Length: {dimensions.GetLength()}");
Console.WriteLine($"Width: {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 ://Console.WriteLine($"Length: {box1.GetLength()}"); //Console.WriteLine($"Width: {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:Console.WriteLine($"Length: {dimensions.GetLength()}"); Console.WriteLine($"Width: {dimensions.GetWidth()}");
Se även
- Objektorienterad programmering
- Gränssnitt
- Så här implementerar du uttryckligen medlemmar i två gränssnitt
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.