Heim Backend-Entwicklung C#.Net-Tutorial Detaillierte Erläuterung von Beispielen der C#-Schnittstelle

Detaillierte Erläuterung von Beispielen der C#-Schnittstelle

Apr 24, 2017 pm 01:36 PM

1. Die Rolle der C#-Schnittstelle

Verwendungszusammenfassung: Definieren Sie eine Schnittstelle, die Methoden enthält, aber es gibt keinen Code für die spezifische Implementierung der Methoden. Dann müssen Sie in der Klasse, die die Schnittstelle erbt, den Code für alle Methoden der Schnittstelle implementieren. Aber wenn Sie die Rolle von Schnittstellen nicht wirklich verstehen, denken Sie, dass die Verwendung von Schnittstellen überflüssig ist. Natürlich liegen Sie völlig falsch, wenn Sie so denken. Bezüglich der Rolle von Schnittstellen gibt es jemanden im Internet, der uns auf einfache und tiefgreifende Weise eine sehr verständliche Analyse gegeben hat.

[csharp] einfache Kopie anzeigen

<p></p><pre code_snippet_id="219991" snippet_file_name="blog_20140306_1_6634576" name="code" class="csharp">//我们定义一个接口  
public interface IBark    
{  
    void Bark();  
}
Nach dem Login kopieren

//Definieren Sie eine andere Klasse, erben Sie von IBark und müssen Sie die Bark()-Methode implementieren

public class Dog:IBark    
{  
    public Dog()  
    {}  
    public void Bark()  //实现其中的Bark()方法  
    {  
       Consol.write("汪汪");  
     }  
}
Nach dem Login kopieren

// Dann deklarieren Sie eine Instanz von Dog und rufen Sie die Bark()-Methode

Dog Wangcai=new Dog(); auf > Frage: Wenn Sie die Bark()-Methode aufrufen möchten, müssen Sie eine solche Methode nur in Dog() deklarieren. Warum gibt es noch keine spezifische Implementierung von Bark() in der Schnittstelle? Muss in Dog() sein. Ist es also nicht unnötig, eine Schnittstelle zu verwenden?

Einige Leute sagen: Von der Definition der Schnittstelle her ist die Schnittstelle tatsächlich eine Art Vereinbarung, eine Einschränkung Das obige Beispiel: Alle Klassen, die die IBark-Schnittstelle erben, müssen die Bark()-Methode implementieren. Wenn er also eine bestimmte Klasse kennt, wird sie von der IBark-Schnittstelle geerbt Er kann die Bark()-Methode sicher aufrufen, unabhängig davon, wie die Bark()-Methode implementiert ist. Wenn der Benutzer beispielsweise die Cat-Klasse verwendet oder es sich um eine Dog-Klasse handelt, wissen wir, dass er erbt Mit IBark können Sie die Bark()-Methode direkt aufrufen, ohne sich um die spezifische Implementierung in der Klasse kümmern zu müssen, da es in diesen beiden Klassen spezifische Implementierungen der Bark()-Methode geben muss Aus gestalterischer Sicht müssen in einem Projekt mehrere Klassen geschrieben werden, und der Arbeitsaufwand ist relativ groß. Daher muss für jede Klasse ein Mitarbeiter schreiben. Beispielsweise definiert A die Klasse Dog und Programmierer B schreibt Die Cat-Klasse hat ursprünglich nichts miteinander zu tun, aber da Benutzer beide eine Methode zum „Aufrufen“ implementieren müssen, erfordert dies eine Einschränkung für sie. Sie erben alle von der IBark-Schnittstelle und dem Zweck Der andere Zweck besteht darin, den Aufruf zu erleichtern. In diesem Fall ist diese Einschränkung jedoch nicht so offensichtlich Die Leute werden diese Methode unweigerlich vermissen. Daher ist sie über die Schnittstelle zuverlässiger und verbindlicher.

Eine einfache Erklärung der Schnittstelle in C#

Angenommen, es gibt zwei Arten von Programmierern in unserem Unternehmen: VB-Programmierer, die sich auf Programmierer beziehen, die Programme in VB schreiben, dargestellt durch die Klasse clsVBProgramer, die sich auf Programmierer beziehen, die Programme in Delphi schreiben clsDelphiProgramer. Jede Klasse verfügt über eine WriteCode()-Methode. Die Definition lautet wie folgt: [csharp] Klartext anzeigen

/*Jetzt hat das Unternehmen ein Projekt und benötigt einen Programmierer, der ein Programm schreibt*/

Im Hauptprogramm können wir so schreiben:

class clsVBProgramer()  
{  
....  
WriteCode()  
{  
     //用VB语言写代码;  
}  
....  
}  
  
class clsDelphiProgramer()  
{  
....  
WriteCode()  
{  
    //用Delphi语言写代码;  
}  
   ....  
}
Nach dem Login kopieren

Aber wenn zu diesem Zeitpunkt ein anderer C#-Programmierer zum Unternehmen kommt, wie ändern wir dann dieses Programm so, dass es Programme in C# schreiben kann ? Was ist mit Funktionen? Wir müssen eine neue Klasse clsCSharpProgramer hinzufügen und gleichzeitig die Methode WritePrograme (clsCSharpProgramer-Programmierer) in dieser clsProject-Klasse erneut überladen. Diesmal ist es mehr Ärger. Was wäre, wenn es C-Programmierer, C++-Programmierer und Java-Programmierer gäbe? Großes Problem!

class clsProject()  
{  
....  
WritePrograme(clsVBProgramer programer)//用VB写代码  
{  
    programer.WriteCode();  
}  
WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码  
{  
    programer.WriteCode();  
}  
......  
}
Nach dem Login kopieren
Aber wenn Sie stattdessen eine Schnittstelle verwenden, wird es völlig anders sein:

Deklarieren Sie zuerst eine Programmierschnittstelle:

main()  
{  
   clsProject proj=new clsProject;  
   //如果需要用VB写代码  
   clsVBProgramer programer1=new clsVBProgramer;  
   proj.WritePrograme(programer1);  
   //如果需要用Delphi写代码  
   clsDelphiProgramer programer2=new clsDelphiProgramer;  
   proj.WritePrograme(programer2);  
}
Nach dem Login kopieren

Dann deklarieren Sie zwei Klassen und implementieren Sie die IProgramer-Schnittstelle :



Ändern Sie die clsProject-Klasse:
interface IProgramer()
{
WriteCode();
}
Nach dem Login kopieren


Wenn Programmierer wie C#, C, C++ und JAVA hinzugefügt werden, müssen wir nur hinzufügen ihre zugehörigen Klassen und nehmen Sie dann geringfügige Änderungen in main() vor und es wird in Ordnung sein. Besonders gut ist die Skalierbarkeit!
class clsVBProgramer():IProgramer{....WriteCode(){     //用VB语言写代码;}....}
class clsDelphiProgramer():IProgramer{....WriteCode(){    //用Delphi语言写代码;}   ....}
Nach dem Login kopieren


Wenn wir außerdem die clsProject-Klasse in einer Komponente versiegeln, müssen wir, wenn unsere Benutzer Funktionen erweitern müssen, nur kleine externe Änderungen vornehmen, um dies zu erreichen Grundsätzlich besteht keine Notwendigkeit, die von uns bereits versiegelten Komponenten zu wechseln! Ist es nicht sehr praktisch und leistungsstark?

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen der C#-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Active Directory mit C# Active Directory mit C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Zugriffsmodifikatoren in C# Zugriffsmodifikatoren in C# Sep 03, 2024 pm 03:24 PM

Leitfaden zu den Zugriffsmodifikatoren in C#. Wir haben die Einführungstypen von Zugriffsmodifikatoren in C# zusammen mit Beispielen und Ausgaben besprochen.

Zufallszahlengenerator in C# Zufallszahlengenerator in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

C#-Datenrasteransicht C#-Datenrasteransicht Sep 03, 2024 pm 03:32 PM

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

C# StringReader C# StringReader Sep 03, 2024 pm 03:23 PM

Leitfaden für C# StringReader. Hier besprechen wir einen kurzen Überblick über C# StringReader und seine Funktionsweise zusammen mit verschiedenen Beispielen und Code.

Muster in C# Muster in C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

C#-Serialisierung C#-Serialisierung Sep 03, 2024 pm 03:30 PM

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

C# StringWriter C# StringWriter Sep 03, 2024 pm 03:23 PM

Leitfaden für C# StringWriter. Hier besprechen wir einen kurzen Überblick über die C#-StringWriter-Klasse und ihre Funktionsweise zusammen mit verschiedenen Beispielen und Codes.

See all articles