Comment : implémenter de manière explicite des membres d'interface (Guide de programmation C#)
Cet exemple déclare une interface, IDimensions, et une classe, Box, qui implémente de façon explicite les membres d'interface getLength et getWidth. Les membres sont accessibles via l'instance d'interface dimensions.
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 Box(30.0f, 20.0f);
// Declare an interface instance dimensions:
IDimensions dimensions = (IDimensions)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
*/
Programmation fiable
Notez que les lignes suivantes, dans la méthode Main, sont transformées en commentaires, parce qu'elles produiraient des erreurs de compilation. Un membre d'interface qui est implémenté de façon explicite n'est pas accessible à partir d'une instance de classe :
//System.Console.WriteLine("Length: {0}", box1.getLength()); //System.Console.WriteLine("Width: {0}", box1.getWidth());
Notez également que les lignes suivantes, dans la méthode Main, impriment correctement les dimensions de la zone, car les méthodes sont appelées à partir d'une instance de l'interface :
System.Console.WriteLine("Length: {0}", dimensions.getLength()); System.Console.WriteLine("Width: {0}", dimensions.getWidth());
Voir aussi
Tâches
Référence
Classes et structs (Guide de programmation C#)
Interfaces (Guide de programmation C#)