Was ist eine Schnittstelle in C# mit Beispiel
⚡ Intelligente Zusammenfassung
Eine Schnittstelle in C# definiert eine VerbindungtracDie Definition legt fest, welche Methoden und Eigenschaften eine Klasse implementieren muss, ohne den eigentlichen Code bereitzustellen. Die implementierende Klasse liefert das konkrete Verhalten und ermöglicht so lose Kopplung und Mehrfachvererbung über verschiedene, nicht verwandte Typen hinweg.

Was ist Schnittstelle in C#?
An Interface in C# wird zusammen mit einer Klasse verwendet, um eine Konfiguration zu definieren.tracDie Schnittstelle ist eine Vereinbarung darüber, welche Funktionen eine Klasse einer Anwendung bereitstellt. Sie definiert, welche Operationen eine Klasse ausführen kann. Eine Schnittstelle deklariert die Eigenschaften und Methoden. Es obliegt der Klasse selbst, die genaue Funktionsweise der einzelnen Methoden festzulegen.
Schauen wir uns ein Beispiel einer Schnittstelle an, indem wir die Klassen in unserer Konsolenanwendung ändern. Beachten Sie, dass wir den Code nicht ausführen, da nichts über eine Schnittstelle ausgeführt werden kann.
Beispiel für eine C#-Schnittstelle
Lasst uns eine Schnittstellenklasse erstellen. Die Klasse wird „Guru99Interface." Unsere Hauptklasse wird dann die definierte Schnittstelle erweitern. Der gesamte Code muss in der Datei Program.cs geschrieben werden.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface IGuru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : IGuru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Erläuterung:-
Hier erklären wir die wichtigen Abschnitte des Codes
- Zuerst definieren wir eine Schnittstelle namens „Guru99Schnittstelle.“ Beachten Sie, dass das Schlüsselwort „Schnittstelle“ verwendet wird, um eine Schnittstelle zu definieren.
- Als nächstes definieren wir die Methoden, die von unserer Schnittstelle verwendet werden. In diesem Fall definieren wir dieselben Methoden, die in allen vorherigen Beispielen verwendet wurden. Beachten Sie, dass eine Schnittstelle nur die Methoden deklariert. Sie definiert nicht den darin enthaltenen Code.
- Dann machen wir unsere GuruDie Klasse 99Tutorial erweitert das Interface. Hier schreiben wir den Code, der die verschiedenen im Interface deklarierten Methoden definiert. Diese Art der Codierung bewirkt Folgendes:
- Es stellt sicher, dass die Klasse, Guru99Tutorial fügt lediglich den Code hinzu, der für die Methoden „SetTutorial“ und „GetTutorial“ notwendig ist, und sonst nichts.
- Es stellt außerdem sicher, dass sich die Schnittstelle wie eine Verbindung verhält.tracT. Der Klasse muss sich an die Regeln haltentract. Wenn also die KontracWenn es heißt, dass es zwei Methoden namens „SetTutorial“ und „GetTutorial“ haben sollte, dann sollte es auch so sein.
C#-Schnittstelle vs. Abstract-Klasse
Eine häufige Frage für Anfänger ist, wie sich eine C#-Schnittstelle von einer anderen unterscheidet. abstracT-KlasseBeide definieren eine Konjunktion.tracEs gibt zwar weitere Typen, die dem folgen, aber dennoch anderen Gestaltungszielen dienen.
Die wichtigsten Unterschiede sind im Folgenden aufgeführt:
- Implementierung: Eine Schnittstelle enthält nur Deklarationen, während ein absolutestracDie t-Klasse kann beides liefern: abstract-Mitglieder und vollständig implementierte Methoden.
- Mehrfachvererbung: Eine Klasse kann viele Schnittstellen implementieren, aber nur eine absolute Schnittstelle erben.tract-Klasse.
- Bundesland/ Kanton: Ein SixpacktracEine Klasse kann Felder, Konstruktoren und Eigenschaften mit Daten enthalten, wohingegen eine Schnittstelle keinen Instanzzustand speichern kann.
- Zugriffsmodifikatoren: AbstracDie Member der Klasse t können public, protected oder private sein, während die Member der klassischen Schnittstelle implizit public sind.
- Anwendungsfall: Verwenden Sie eine Schnittstelle, um eine Funktionalität über verschiedene, nicht verwandte Typen hinweg hinzuzufügen, und eine absolutetract-Klasse, um gemeinsamen Code zwischen eng verwandten Typen zu teilen.
Kurz gesagt, eine Schnittstelle beschreibt, was eine Klasse tun kann, während ein absolutes Interface (abs)tracDie Klasse t kann auch einen Teil der Vorgehensweise definieren.
Wie man mehrere Schnittstellen in C# implementiert
Anders als bei der Klassenvererbung erlaubt C# einer einzelnen Klasse, mehrere Schnittstellen zu implementieren. Dadurch bietet die Sprache eine sichere Form der Mehrfachvererbung ohne die Mehrdeutigkeit, die durch die gleichzeitige Vererbung mehrerer Basisklassen entsteht.
Um mehrere Schnittstellen zu implementieren, listen Sie diese nach dem Klassennamen auf und trennen Sie sie durch Kommas. Die Klasse muss anschließend jede in den implementierten Schnittstellen deklarierte Methode definieren.
Schritt 1) Deklarieren Sie zwei Schnittstellen, jede mit ihrer eigenen Methode.
Schritt 2) Erstellen Sie eine Klasse, die beide Schnittstellen implementiert, wobei die Schnittstellennamen durch ein Komma getrennt werden.
Schritt 3) Stellen Sie für jedes in den Schnittstellen deklarierte Element einen Methodenrumpf bereit.
Das folgende Beispiel zeigt eine Document-Klasse, die sowohl ein I implementiert.Readable und eine IWritable-Schnittstelle.
using System; namespace DemoApplication { interface IReadable { void Read(); } interface IWritable { void Write(); } class Document : IReadable, IWritable { public void Read() { Console.WriteLine("Reading the document"); } public void Write() { Console.WriteLine("Writing to the document"); } static void Main(string[] args) { Document doc = new Document(); doc.Read(); doc.Write(); Console.ReadKey(); } } }
Code Erläuterung:-
- Wir deklarieren zwei Schnittstellen, IReadable und IWritable. Jede Schnittstelle deklariert eine einzelne Methode ohne Methodenrumpf.
- Die Document-Klasse listet beide Schnittstellen nach dem Doppelpunkt, durch ein Komma getrennt, auf und berücksichtigt somit beide Konventionen.tracts.
- Die Klasse definiert anschließend die Methoden „Lesen“ und „Schreiben“. Überspringenping Beide Methoden würden einen Kompilierfehler verursachen.
- Die Main-Methode erzeugt ein Document-Objekt und ruft beide Methoden auf, wodurch bewiesen wird, dass die Klasse die beiden Schnittstellen erfüllt.
Wenn das Programm ausgeführt wird, gibt es Folgendes aus: Das Dokument lesen in der ersten Zeile und Schreiben an das Dokument in der zweiten Zeile. Dieses Muster hält jedes Con aufrecht.tract klein und fokussiert, was die Document-Klasse einfacher zu testen und zu erweitern macht.
Vorteile der Verwendung von Schnittstellen in C#
Schnittstellen werden in professionellen C#-Projekten häufig eingesetzt, da sie den Code flexibel und wartungsfreundlicher machen. Sie ermöglichen es, gegen eine bestimmte Sprache zu programmieren.tract statt einer konkreten Klasse.
Die Hauptvorteile sind:
- Lose Kopplung: Code Es hängt von der Schnittstelle ab, nicht von einer bestimmten Klasse, daher kann sich eine Implementierung ändern, ohne dass die Aufrufer beeinträchtigt werden.
- Mehrfachvererbung: Eine Klasse kann Verhalten von mehreren Schnittstellen erben, was bei einfacher Klassenvererbung nicht möglich ist.
- Testbarkeit: Schnittstellen erleichtern es, während Unit-Tests eine reale Klasse durch ein Mock-Objekt zu ersetzen.
- Abhängigkeitsspritze: Frameworks injizieren eine Schnittstellenimplementierung zur Laufzeit, eine Kernidee der SOLID-Prinzipien.
- Konsistenz: Jede implementierende Klasse ist gezwungen, die gleichen Member bereitzustellen, was die Vorhersagbarkeit der API gewährleistet.
Aufgrund dieser Vorteile bilden Schnittstellen den Kern der meisten modernen C#-Designmuster und Anwendungsframeworks.

