C# Erweiterungsmethoden

C# Erweiterungsmethoden
Das Konzept der Erweiterungsmethode wird verwendet, um neue Methoden in die bereits im Programm vorhandene Klasse einzufügen. Oder es kann uns ermöglichen, einige Erweiterungsfunktionen hinzuzufügen, ohne den Quellcode des Originaltyps zu bearbeiten. Dies verhindert die Verwendung von Vererbung und macht den Code kompliziert. Wie können diese Methoden zugegriffen werden, wenn die Erweiterungsmethoden in der neuen Klasse vorhanden sind?

Die Antwort auf diese Abfrage liegt in der Verwendung eines Bindungsparameters. Diese werden verwendet, um die Klasse mit den neu erstellten Funktionen zu binden. Es ist eine leere Variable, die keinen Wert enthält. Es fungiert nur als einfaches Schlüsselwort. Es wird immer überhaupt erst in der Liste der Parameter deklariert. Wenn es anders als an der ersten Stelle geschrieben ist, gibt der entsprechende Compiler einen Fehler an. Das für den Bindungszweck verwendete Schlüsselwort lautet "This".

# Dieses Beispiel S;

Alle Erweiterungsmethoden werden immer als statisch deklariert, aber sobald die Bindung mit der Klasse aufgetreten ist, werden diese Funktionen nicht statisch.

Beispiel 1

Betrachten Sie ein einfaches C -scharfer Programm, in dem drei Funktionen definiert sind. Alle diese Funktionen enthalten eine einfache Konsole.Writeline -Anweisung, um die Nachricht auf den Bildschirmen anzuzeigen. Diese Methoden sind die regulären Funktionen, wie einfache Programme haben.

# Public void M1 ()

Jetzt möchten wir diesem vorhandenen Programm Erweiterungen hinzufügen. Erweiterungen spielen eine wichtige Rolle beim Hinzufügen neuer Funktionen im Unterricht, ohne die Vererbung zu verwenden. Darüber hinaus können wir einfach eine neue Klasse hinzufügen, ohne die vorherige zu bearbeiten. Wir werden der Klassenprobe zwei Erweiterungsmethoden hinzufügen. Die neuen Funktionen werden in einer neuen statischen Klasse deklariert und werden Teil der vorhandenen Stichprobenklasse. Dieser Prozess wird als Bindung bezeichnet. Es wird also eine neue statische Klasse erstellt. Diese Klasse hat keinen Zusammenhang mit der vorhandenen Klasse, da sie nicht von der abstrakten Klasse oder bereits vorhandener Klasse vererbt wird.

In der Klasse deklarieren wir zwei neue statische Funktionen. Diese Funktionen haben die gleichen Aussagen, die angezeigt werden müssen. Während die Deklaration der statischen Funktionen im Parameter das Schlüsselwort "Dies" zusammen mit dem Objekt der Beispielklasse verwenden. A 'Dies' ist ein Bindungsparameter; Es enthält keinen Wert, wird jedoch nur zur Bindung der neu erstellten statischen Methoden mit dem vorhandenen in der bereits definierten Klasse verwendet. Da wir die Methoden an die Klassenprobe binden möchten, werden die Klasse und das Objekt in Argumenten für den Bindungszweck verwendet.

# Öffentliche statische Leere M4 (diese Stichprobe)

In ähnlicher Weise nimmt die zweite Funktion dieses Schlüsselwort und das Objekt der Klasse auch auf. In der Liste der Parameter deklarieren wir Bindungsparameter immer zu Beginn.

Diese Funktion zeigt eine Anweisung an, die über das Hauptprogramm übergeben wurde. Eine Klasse für das Hauptprogramm wird deklariert. Im Hauptprogramm werden wir ein Objekt für die Beispielklasse erstellen, da wir die neuen Methoden mit der Beispielklasse verknüpft haben. Daher werden auf alle diese Methoden über das Objekt der Beispielklasse zugegriffen. Es ist nicht erforderlich, ein Objekt für die neue Klasse zu erstellen.

# Sample S = new sample ();

Das Objekt der Klasse wird dynamisch angegeben. Dieses Objekt ruft alle Funktionen beider separat definierter Klassen auf.

# S.M1 ();

Wir werden den obigen Quellcode im Ubuntu -Terminal ausführen. Zu diesem Zweck wird ein Compiler benötigt, also verwenden wir MCs und wir werden Mono verwenden, um die Datei mit der Erweiterung von auszuführen .exe.

$ Mcs Datei.CS
$ mono -Datei.exe

Beispiel 2

In diesem Beispiel wird eine boolesche Funktion erstellt, um zwei Werte zu vergleichen und zurückzugeben, ob der erste Wert größer als der erste ist. Dieser Vergleich erfolgt in der Erweiterungsklasse in einer Erweiterungsmethode. Nach der Erklärung der Bibliotheken haben wir direkt eine einzelne Klasse verwendet, in der eine erweiterte Methode deklariert wird.

In der Klasse haben wir eine Bool -Typ -Funktion übernommen. Dieser Boolesche gibt einen einzelnen Wert, "wahr" oder "Falsch" gleichzeitig zurück. Wenn der erste Wert größer ist als 'wahr'; Andernfalls ist die Antwort falsch. Dieser Parameter enthält den Parameter 'this', um die erweiterte Funktion mit den Variablen zu binden, die wir aus dem Hauptprogramm an sie gesendet haben. Während zwei Variablen des Ganzzahl -Datentyps auch hier erklärt werden, um die Werte zu speichern. Der Vergleich zwischen diesen beiden Ganzzahl -Zahlen wird durchgeführt und der Wert wird zurückgegeben.

Im Hauptprogramm wird eine Ganzzahl -Typvariable eingenommen und ein Wert zugewiesen.

# Bool z = stri.myextesionsMethod (200);

Eine BOOL -Typvariable wird hier erklärt, den zurückgegebenen Wert der Funktion in einem Funktionsaufruf zu akzeptieren. Das Objekt -STRI wird verwendet, um die Funktion aufzurufen. Dies nimmt einen Wert im Parameter an. Der zweite Wert wird durch das Aufrufen der Funktion über das Objekt gesendet.

Speichern Sie den Code und führen Sie ihn aus; Sie werden sehen, dass der erste Wert kleiner als der zweite war, weshalb die Antwort falsch ist.

Beispiel 3

In diesem Beispiel von C Sharp haben wir eine integrierte String-Methode verwendet, um die Länge der Eingangszeichenfolge zu berechnen, die an die Funktion des Hauptprogramms übergeben wurde. Eine statische Klasse wird erstellt. Das statische Schlüsselwort zeigt, dass eine andere Klasse es nicht erben kann. In dieser statischen Klasse wird eine statische Methode deklariert. Diese Methode findet die Gesamtlänge der Zeichenfolge. Daher enthält der Methodeparameter eine String -Typ -Variable, um die Eingangszeichenfolge zu akzeptieren.

Die Längenmethode wird über das Objekt der Zeichenfolge zugegriffen. Deklarieren Sie nun die Hauptfunktion. Weisen Sie dem String -Datentyp einen String -Wert zu.

# Int z = stri.ExtensionMethodName ();

Dieser Funktionsaufruf nimmt die Länge zurück und speichert sie in der Ganzzahl -Typvariable. Diese Länge wird später mit Hilfe der WriteLine () -Methode durch diese Variable angezeigt.

Kompilieren Sie den Code und führen Sie ihn aus. Sie werden sehen, dass im Programm eine Reihe von 10 Zeichen verwendet wurde.

Abschluss

Eine Erweiterungsmethode in C Sharp wird verwendet, um dem Programm zusätzliche Funktionen hinzuzufügen. Dies kann durch die Verwendung einer zusätzlichen Klasse mit erweiterten Methoden erfolgen. Diese Methoden sind jedoch Teil einer anderen Klasse, können jedoch über das Objekt der bereits erstellten Klasse verknüpft und zugegriffen werden. Wir haben einige grundlegende Beispiele verwendet, die die Erstellung und Arbeit der erweiterten Methoden erklärt haben. Das Keyword "This" spielt eine wichtige Rolle bei der Bindung von Erweiterungsmethoden mit der Klasse. Wir verwenden dieses Schlüsselwort im Parameter der erweiterten Funktion.