Das Interface in C#: Eine ausführliche Referenz

Das Interface in C#: Eine ausführliche Referenz

Eine Schnittstelle in C# definiert einen Vertrag zwischen verschiedenen Klassen oder Strukturen. Jeder Typ, der diesen Vertrag implementiert, muss die in der Schnittstelle definierten Member bereitstellen. Eine Schnittstelle kann auch eine Standardimplementierung für bestimmte Member enthalten. Ab C# 11 können Schnittstellen sogar static abstract- oder static virtual-Member definieren, um bestimmte Anforderungen an die implementierenden Typen festzulegen.

Beispiel einer Schnittstelle

Hier ist ein Beispiel, wie eine Schnittstelle in C# definiert und implementiert werden kann:

interface ISampleInterface {
    void SampleMethod();
}

class ImplementationClass : ISampleInterface {
    public void SampleMethod() {
        // Method implementation
    }

    static void Main() {
        ISampleInterface obj = new ImplementationClass();
        obj.SampleMethod();
    }
}

Eine Schnittstelle kann verschiedene Arten von Membern enthalten, wie Methoden, Eigenschaften, Indexer und Ereignisse. Diese Mitglieder sind nur Signaturen ohne Implementierung.

Standardschnittstellenmember

Schnittstellen können auch Member enthalten, die bereits eine Standardimplementierung haben. Einige Beispiele für solche Member sind Konstanten, Operatoren, statische Konstruktoren und geschachtelte Typen. Diese Standardimplementierungen ermöglichen es der Schnittstelle, eine allgemeine Funktionalität bereitzustellen, wenn keine überschreibende Implementierung bereitgestellt wird.

Statische abstrakte und virtuelle Member

Ab C# 11 können Schnittstellen auch static abstract- und static virtual-Member definieren. Diese Member können für verschiedene Membertypen, außer Felder, deklariert werden. Mit diesem Feature können generische Algorithmen ein zahlenähnliches Verhalten angeben. Beispiele dafür sind die numerischen Typen in der .NET-Runtime. Der Compiler löst Aufrufe von static virtual- und static abstract-Methoden zur Kompilierzeit auf und verwendet die verfügbaren Typinformationen.

Schnittstellenvererbung

Eine Schnittstelle kann von einer oder mehreren Basisschnittstellen erben. Wenn eine Methode in einer Schnittstelle überschrieben wird, die bereits in einer Basisschnittstelle implementiert ist, muss die explizite Schnittstellenimplementierung verwendet werden.

LESEN  Ein Leben mit 180Hz: Der ROG Swift PG248Q Gaming-Monitor

Beispielschnittstellenimplementierungen

Hier ist ein Beispiel, wie eine Schnittstelle in C# implementiert werden kann:

interface IPoint {
    int X { get; set; }
    int Y { get; set; }
    double Distance { get; }
}

class Point : IPoint {
    public int X { get; set; }
    public int Y { get; set; }
    public double Distance => Math.Sqrt(X * X + Y * Y);
}

class MainClass {
    static void PrintPoint(IPoint p) {
        Console.WriteLine("x={0}, y={1}", p.X, p.Y);
    }

    static void Main() {
        IPoint p = new Point(2, 3);
        Console.Write("My Point: ");
        PrintPoint(p);
    }
}

In diesem Beispiel implementiert die Klasse Point die Schnittstelle IPoint. Eine Instanz der Klasse Point hat die ganzzahligen Eigenschaften X und Y. Die Methode PrintPoint akzeptiert eine Instanz der Schnittstelle IPoint und gibt die Werte von X und Y aus.

Das Interface ist ein leistungsstarkes Konzept in C#, das die Flexibilität und Wiederverwendbarkeit von Code erhöht. Es ermöglicht die Trennung von Vertrag und Implementierung und fördert die Erstellung sauberer und modularer Code. Weitere Informationen finden Sie in der C#-Sprachspezifikation und im C#-Programmierhandbuch.