C# valodā pagarināšanas metode koncepcija ļauj pievienot jaunas metodes esošajā klasē vai struktūrā, nemainot sākotnējā tipa avota kodu, un jums nav nepieciešama nekāda veida īpaša atļauja no sākotnējā tipa un nav nepieciešams atkārtoti kompilēt sākotnējo tipu. . Tas tiek ieviests C# 3.0 .
Apspriedīsim šo jēdzienu, izmantojot piemēru. Pieņemsim, ka jums ir klase vai struktūra, kas satur trīs metodes un vēlaties šai klasei vai struktūrai pievienot divas jaunas metodes, jums nav klases/struktūras pirmkoda vai jums nav šīs klases/struktūras atļauju, vai klase ir noslēgta klase, bet jūs joprojām vēlaties tai pievienot jaunas metodes, tad varat izmantot koncepcijas paplašinājuma metodi, lai pievienotu jauno metodi esošajā klasē/struktūrā.
java virknes pievienošanās
Tagad izveidojat jaunu klasi, kas ir statiska un satur divas metodes, kuras vēlaties pievienot esošajai klasei. Tagad saistiet šo klasi ar esošo klasi. Pēc saistīšanas jūs redzēsit, ka esošā klase var piekļūt divām tikko pievienotajām metodēm. Kā parādīts zemāk esošajā programmā.

Piemērs:
Vispirms izveidojam klasi ar nosaukumu kā Geek iekšā Programma1.cs failu. Tas satur trīs metodes, kas ir M1() , M2() , un 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"); } } }> Tagad mēs izveidojam statisku klasi ar nosaukumu NewMethodClass in Programma2.cs failu. Tas satur divas metodes, kas ir M4() un M5() . Tagad mēs vēlamies pievienot šīs metodes Geek klasē, tāpēc mēs izmantojam saistošais parametrs saistīt šīs metodes ar Geek klasi. Pēc tam mēs izveidojam citu ar nosaukumu GFG, kurā Geek klase piekļūst visām piecām metodēm.>
// 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"); } } }> Izvade:
Method Name: M1 Method Name: M2 Method Name: M3 Method Name: M4 Method Name: M5>
Svarīgi punkti:
- Šeit, Iesiešanas parametri ir tie parametri, kas tiek izmantoti, lai saistītu jauno metodi ar esošo klasi vai struktūru. Izsaucot paplašinājuma metodi, tai nav nekādas vērtības, jo tās tiek izmantotas tikai saistīšanai, nevis citam lietojumam. Paplašinājuma metodes parametru sarakstā saistīšanas parametrs vienmēr atrodas pirmajā vietā, ja jūs ierakstāt saistošo parametru otrajā vai trešajā vietā vai jebkurā citā vietā, nevis pirmajā vietā, kompilators parādīs kļūdu. Saistošais parametrs tiek izveidots, izmantojot šo atslēgvārdu, kam seko tās klases nosaukums, kurā vēlaties pievienot jaunu metodi, un parametra nosaukums. Piemēram:
this Geek g>
Šeit, šis atslēgvārds tiek izmantots iesiešanai, Geek ir klases nosaukums, kurā vēlaties izveidot saiti, un g ir parametra nosaukums. - Paplašināšanas metodes vienmēr tiek definētas kā statiskas metodes, bet, ja tās ir saistītas ar jebkuru klasi vai struktūru, tās tiks pārveidotas par nestatiskām metodēm.
- Ja paplašinājuma metode ir definēta ar tādu pašu nosaukumu un esošās metodes parakstu, kompilators izdrukā esošo metodi, nevis paplašinājuma metodi. Citiem vārdiem sakot, paplašinājuma metode neatbalsta metodes ignorēšana .
- Varat arī pievienot jaunas metodes aizzīmogotā klase izmantojot arī paplašinājuma metodes koncepciju.
- To nevar attiecināt uz laukiem, īpašības , vai notikumiem.
- Tam jābūt definētam augstākā līmeņa statiskajā klasē.
- Nav atļauti vairāki saistīšanas parametri, tas nozīmē, ka paplašinājuma metode satur tikai vienu saistīšanas parametru. Bet jūs varat definēt vienu vai vairākus parastos parametrus paplašinājuma metodē.
Priekšrocības:
- Paplašināšanas metodes galvenā priekšrocība ir jaunu metožu pievienošana esošajai klasei, neizmantojot mantojums .
- Esošajā klasē varat pievienot jaunas metodes, nemainot esošās klases avota kodu.
- Tas var strādāt arī ar aizzīmogotā klase .