Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet exemple déclare une interface, IDimensions
et une classe, Box
qui implémente explicitement les membres GetLength
de l’interface et GetWidth
. Les membres sont accessibles via l’instance dimensions
d’interface.
Exemple :
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
*/
Programmation robuste
Notez que les lignes suivantes, dans la
Main
méthode, sont commentées, car elles produisent des erreurs de compilation. Un membre d’interface explicitement implémenté ne peut pas être accessible à partir d’une instance de classe ://Console.WriteLine($"Length: {box1.GetLength()}"); //Console.WriteLine($"Width: {box1.GetWidth()}");
Notez également que les lignes suivantes, dans la
Main
méthode, affichent correctement les dimensions de la boîte, car les méthodes sont appelées à partir d’une instance de l’interface :Console.WriteLine($"Length: {dimensions.GetLength()}"); Console.WriteLine($"Width: {dimensions.GetWidth()}");