Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit voorbeeld worden een interface en een klasse Box gedeclareerd, die expliciet de interfaceleden GetLength en GetWidth implementeert. De leden worden benaderd via de interface-instantie dimensions.
Voorbeeld
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
*/
Robuuste programmering
Zoals u ziet, worden de volgende regels in de
Mainmethode als commentaar weergegeven omdat ze compilatiefouten zouden opleveren. Een interfacelid dat expliciet is geïmplementeerd, kan niet worden geopend vanuit een klasse-exemplaar ://Console.WriteLine($"Length: {box1.GetLength()}"); //Console.WriteLine($"Width: {box1.GetWidth()}");Merk ook op dat de onderstaande regels in de
Main-methode succesvol de afmetingen van het vak afdrukken, omdat de methoden worden aangeroepen vanuit een exemplaar van de interface:Console.WriteLine($"Length: {dimensions.GetLength()}"); Console.WriteLine($"Width: {dimensions.GetWidth()}");