Gewusst wie: Explizites Implementieren von Schnittstellenmembern (C#-Programmierhandbuch)How to: Explicitly Implement Interface Members (C# Programming Guide)

Dieses Beispiel deklariert eine Schnittstelle, IDimensions, und eine Klasse, Box, die explizit die Schnittstellenmember getLength und getWidth implementiert.This example declares an interface, IDimensions, and a class, Box, which explicitly implements the interface members getLength and getWidth. Die Member werden über eine Schnittstelleninstanz, dimensions, erreicht.The members are accessed through the interface instance dimensions.

BeispielExample

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
*/

Stabile ProgrammierungRobust Programming

  • Beachten Sie, dass die folgenden Zeilen in der Main-Methode auskommentiert werden, da sie Kompilierungsfehler verursachen würden.Notice that the following lines, in the Main method, are commented out because they would produce compilation errors. Auf ein Schnittstellenmember, das explizit implementiert wird, kann nicht von einer class-Instanz zugegriffen werden.An interface member that is explicitly implemented cannot be accessed from a class instance:

    //System.Console.WriteLine("Length: {0}", box1.getLength());
    //System.Console.WriteLine("Width: {0}", box1.getWidth());
    
  • Beachten Sie auch, dass die folgenden Zeilen in der Main-Methode erfolgreich die Dimensionen des Felds ausdrucken, da die Methoden von einer Instanz der Schnittstelle aufgerufen werden:Notice also that the following lines, in the Main method, successfully print out the dimensions of the box because the methods are being called from an instance of the interface:

    System.Console.WriteLine("Length: {0}", dimensions.getLength());
    System.Console.WriteLine("Width: {0}", dimensions.getWidth());
    

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
Klassen und StrukturenClasses and Structs
SchnittstellenInterfaces
Gewusst wie: Explizites Implementieren von Membern zweier SchnittstellenHow to: Explicitly Implement Members of Two Interfaces