V C# je razširitvena metoda koncept vam omogoča dodajanje novih metod v obstoječem razredu ali strukturi brez spreminjanja izvorne kode izvirnega tipa in ne potrebujete nobenih posebnih dovoljenj izvirnega tipa in ni potrebe po ponovnem prevajanju izvirnega tipa . Predstavljen je v C# 3.0 .
Razpravljajmo o tem konceptu s pomočjo primera. Recimo, da imate razred ali strukturo, ki vsebuje tri metode in želite v ta razred ali strukturo dodati dve novi metodi, nimate izvorne kode razreda/strukture ali nimate dovoljenj za razred/strukturo ali razred je zapečaten razred, vendar še vedno želite dodati nove metode vanj, potem lahko uporabite metodo razširitve koncepta, da dodate novo metodo v obstoječi razred/strukturo.
niz nizov c programiranje
Zdaj ustvarite nov razred, ki je statičen in vsebuje dve metodi, ki ju želite dodati obstoječemu razredu, zdaj povežite ta razred z obstoječim razredom. Po vezavi boste videli, da lahko obstoječi razred dostopa do dveh na novo dodanih metod. Kot je prikazano v spodnjem programu.

primer:
Najprej ustvarimo razred z imenom as Geek v Program1.cs mapa. Vsebuje tri metode, tj M1() , M2() , in 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"); } } }> Zdaj ustvarimo statični razred z imenom NewMethodClass in Program2.cs mapa. Vsebuje dve metodi, ki sta M4() in M5() . Zdaj želimo dodati te metode Geek razreda, zato uporabljamo vezni parameter za povezovanje teh metod z razredom Geek. Po tem ustvarimo še enega z imenom GFG, v katerem razred Geek dostopa do vseh petih metod.>
// 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"); } } }> Izhod:
Method Name: M1 Method Name: M2 Method Name: M3 Method Name: M4 Method Name: M5>
Pomembne točke:
- tukaj, Parametri vezave so tisti parametri, ki se uporabljajo za povezovanje nove metode z obstoječim razredom ali strukturo. Ko kličete metodo razširitve, nima nobene vrednosti, ker se uporabljajo samo za vezavo in ne za nobeno drugo uporabo. Na seznamu parametrov metode razširitve je vezni parameter vedno prisoten na prvem mestu, če zapišete vezni parameter na drugo, tretje ali katero koli drugo mesto namesto na prvo mesto, bo prevajalnik izdal napako. Vezalni parameter se ustvari s to ključno besedo, ki ji sledi ime razreda, v katerega želite dodati novo metodo, in ime parametra. Na primer:
this Geek g>
tukaj, to ključna beseda se uporablja za vezavo, Geek je ime razreda, v katerem se želite povezati, in g je ime parametra. - Razširitvene metode so vedno definirane kot statične metode, a ko so vezane na kateri koli razred ali strukturo, se bodo pretvorile v nestatične metode.
- Ko je metoda razširitve definirana z istim imenom in podpisom obstoječe metode, bo prevajalnik natisnil obstoječo metodo, ne metode razširitve. Ali z drugimi besedami, metoda razširitve ne podpira preglasitev metode .
- Dodate lahko tudi nove metode v zapečateni razred tudi z uporabo koncepta razširitvene metode.
- Ne more veljati za polja, lastnosti , ali dogodki.
- Definiran mora biti v statičnem razredu najvišje ravni.
- Več veznih parametrov ni dovoljenih, kar pomeni, da razširitvena metoda vsebuje samo en vezni parameter. Lahko pa določite enega ali več običajnih parametrov v metodi razširitve.
Prednosti:
- Glavna prednost metode razširitve je dodajanje novih metod v obstoječi razred brez uporabe dedovanje .
- Nove metode lahko dodate v obstoječi razred, ne da bi spremenili izvorno kodo obstoječega razreda.
- Deluje lahko tudi z zapečateni razred .