logo

Erweiterungsmethode in C#

In C# ist die Erweiterungsmethode Mit dem Konzept können Sie neue Methoden in der vorhandenen Klasse oder in der Struktur hinzufügen, ohne den Quellcode des Originaltyps zu ändern. Außerdem benötigen Sie keinerlei besondere Erlaubnis vom Originaltyp und es besteht keine Notwendigkeit, den Originaltyp neu zu kompilieren . Es wird eingeführt in C# 3.0 .

Lassen Sie uns dieses Konzept anhand eines Beispiels diskutieren. Angenommen, Sie haben eine Klasse oder Struktur, die drei Methoden enthält, und Sie möchten dieser Klasse oder Struktur zwei neue Methoden hinzufügen, Sie verfügen nicht über den Quellcode der Klasse/Struktur oder haben keine Berechtigungen von der Klasse/Struktur, oder Die Klasse ist eine versiegelte Klasse, Sie möchten ihr aber dennoch neue Methoden hinzufügen. Dann können Sie die Konzepterweiterungsmethode verwenden, um die neue Methode in die vorhandene Klasse/Struktur einzufügen.



Hoppla, Konzepte in Java

Jetzt erstellen Sie eine neue Klasse, die statisch ist und die beiden Methoden enthält, die Sie der vorhandenen Klasse hinzufügen möchten. Binden Sie diese Klasse nun an die vorhandene Klasse. Nach der Bindung sehen Sie, dass die vorhandene Klasse auf die beiden neu hinzugefügten Methoden zugreifen kann. Wie im folgenden Programm gezeigt.

Beispiel:

Zuerst erstellen wir eine Klasse mit dem Namen as Geek In Programm1.cs Datei. Es enthält drei Methoden M1() , M2() , Und M3() .



C#
// C# program to illustrate the concept  // of the extension methods using System; namespace ExtensionMethod { // Here Geek class contains three methods // Now we want to add two more new methods in it // Without re-compiling this class class Geek { // Method 1 public void M1() { Console.WriteLine("Method Name: M1"); } // Method 2 public void M2() { Console.WriteLine("Method Name: M2"); } // Method 3 public void M3() { Console.WriteLine("Method Name: M3"); } } }>

Jetzt erstellen wir eine statische Klasse mit dem Namen NewMethodClass in Programm2.cs Datei. Es enthält zwei Methoden M4() Und M5() . Jetzt wollen wir diese Methoden hinzufügen Geek Klasse, also verwenden wir die Bindungsparameter um diese Methoden mit der Geek-Klasse zu binden. Danach erstellen wir eine weitere mit dem Namen GFG, in der die Geek-Klasse auf alle fünf Methoden zugreift.>

C#
// C# program to illustrate the concept // of the extension methods using System; namespace ExtensionMethod { // This class contains M4 and M5 method // Which we want to add in Geek class. // NewMethodClass is a static class static class NewMethodClass { // Method 4 public static void M4(this Geek g) { Console.WriteLine("Method Name: M4"); } // Method 5 public static void M5(this Geek g, string str) { Console.WriteLine(str); } } // Now we create a new class in which // Geek class access all the five methods public class GFG { // Main Method public static void Main(string[] args) { Geek g = new Geek(); g.M1(); g.M2(); g.M3(); g.M4(); g.M5("Method Name: M5"); } } }>

Ausgabe:

Method Name: M1 Method Name: M2 Method Name: M3 Method Name: M4 Method Name: M5>

Wichtige Punkte:



  • Hier, Bindungsparameter sind die Parameter, die verwendet werden, um die neue Methode an die vorhandene Klasse oder Struktur zu binden. Wenn Sie die Erweiterungsmethode aufrufen, nimmt sie keinen Wert an, da sie nur zum Binden und nicht für andere Zwecke verwendet wird. In der Parameterliste der Erweiterungsmethode ist der Bindungsparameter immer an erster Stelle vorhanden. Wenn Sie Bindungsparameter an die zweite, dritte oder eine andere Stelle statt an die erste Stelle schreiben, gibt der Compiler einen Fehler aus. Der Bindungsparameter wird mit diesem Schlüsselwort erstellt, gefolgt vom Namen der Klasse, in der Sie eine neue Methode hinzufügen möchten, und dem Parameternamen. Zum Beispiel:
    this Geek g>
    Hier, Das Schlüsselwort wird für die Bindung verwendet, Geek ist der Klassenname, in den Sie binden möchten, und G ist der Parametername.
  • Erweiterungsmethoden werden immer als statische Methoden definiert, aber wenn sie an eine Klasse oder Struktur gebunden sind, werden sie in nicht statische Methoden umgewandelt.
  • Wenn eine Erweiterungsmethode mit demselben Namen und der gleichen Signatur wie die vorhandene Methode definiert wird, gibt der Compiler die vorhandene Methode und nicht die Erweiterungsmethode aus. Oder mit anderen Worten: Die Erweiterungsmethode wird nicht unterstützt Methode überschreiben .
  • Sie können auch neue Methoden hinzufügen versiegelte Klasse auch unter Verwendung eines Erweiterungsmethodenkonzepts.
  • Es kann nicht auf Felder angewendet werden, Eigenschaften , oder Ereignisse.
  • Es muss in der statischen Klasse der obersten Ebene definiert werden.
  • Mehrere Bindungsparameter sind nicht zulässig. Das bedeutet, dass eine Erweiterungsmethode nur einen einzigen Bindungsparameter enthält. Sie können jedoch einen oder mehrere normale Parameter in der Erweiterungsmethode definieren.

Vorteile:

  • Der Hauptvorteil der Erweiterungsmethode besteht darin, der vorhandenen Klasse neue Methoden hinzuzufügen, ohne sie zu verwenden Nachlass .
  • Sie können der vorhandenen Klasse neue Methoden hinzufügen, ohne den Quellcode der vorhandenen Klasse zu ändern.
  • Es kann auch mit funktionieren versiegelte Klasse .