En C#, el mètode d'extensió El concepte us permet afegir nous mètodes a la classe existent o a l'estructura sense modificar el codi font del tipus original i no necessiteu cap tipus de permís especial del tipus original i no cal tornar a compilar el tipus original. . S'introdueix a C# 3.0 .
Parlem d'aquest concepte amb l'ajuda d'un exemple. Suposem que teniu una classe o una estructura que conté tres mètodes i voleu afegir dos mètodes nous a aquesta classe o estructura, no teniu el codi font de la classe/estructura o no teniu els permisos de la classe/estructura, o la classe és una classe segellada, però encara voleu afegir-hi mètodes nous, llavors podeu utilitzar el mètode d'extensió del concepte per afegir el nou mètode a la classe/estructura existent.
primavera mvc
Ara creeu una classe nova que és estàtica i que conté els dos mètodes que voleu afegir a la classe existent, ara enllaçeu aquesta classe amb la classe existent. Després de l'enllaç, veureu que la classe existent pot accedir als dos mètodes afegits recentment. Com es mostra al programa següent.

Exemple:
Primer creem una classe anomenada com Friki en Programa 1.cs dossier. Conté tres mètodes és a dir M1() , M2() , i 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"); } } }> Ara creem una classe estàtica anomenada NewMethodClass in Programa 2.cs dossier. Conté dos mètodes que són M4() i M5() . Ara volem afegir aquests mètodes Friki classe, així que fem servir el paràmetre d'enllaç per vincular aquests mètodes amb la classe Geek. Després d'això, en creem un altre anomenat GFG en el qual la classe Geek accedeix als cinc mètodes.>
// 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"); } } }> Sortida:
Method Name: M1 Method Name: M2 Method Name: M3 Method Name: M4 Method Name: M5>
Punts importants:
- Aquí, Paràmetres d'enllaç són aquells paràmetres que s'utilitzen per vincular el nou mètode amb la classe o estructura existent. No pren cap valor quan crideu al mètode d'extensió perquè només s'utilitzen per a l'enllaç, no per a cap altre ús. A la llista de paràmetres del mètode d'extensió, el paràmetre d'enllaç sempre està present al primer lloc si escriviu el paràmetre d'enllaç al segon, o al tercer, o a qualsevol altre lloc en lloc del primer lloc, el compilador donarà un error. El paràmetre d'enllaç es crea amb aquesta paraula clau seguida del nom de la classe a la qual voleu afegir un mètode nou i el nom del paràmetre. Per exemple:
this Geek g>
Aquí, això La paraula clau s'utilitza per a l'enllaç, Friki és el nom de la classe en què voleu enllaçar i g és el nom del paràmetre. - Els mètodes d'extensió sempre es defineixen com un mètode estàtic, però quan estan vinculats amb qualsevol classe o estructura es convertiran en mètodes no estàtics.
- Quan es defineix un mètode d'extensió amb el mateix nom i la signatura del mètode existent, el compilador imprimirà el mètode existent, no el mètode d'extensió. O dit d'una altra manera, el mètode d'extensió no és compatible anul·lació del mètode .
- També podeu afegir nous mètodes al fitxer classe segellada també utilitzant un concepte de mètode d'extensió.
- No es pot aplicar als camps, propietats , o esdeveniments.
- S'ha de definir a la classe estàtica de primer nivell.
- No es permeten diversos paràmetres d'enllaç significa que un mètode d'extensió només conté un únic paràmetre d'enllaç. Però podeu definir un o més paràmetres normals al mètode d'extensió.
Avantatges:
- El principal avantatge del mètode d'extensió és afegir nous mètodes a la classe existent sense utilitzar herència .
- Podeu afegir nous mètodes a la classe existent sense modificar el codi font de la classe existent.
- També es pot treballar amb classe segellada .