C# kalboje pratęsimo metodas koncepcija leidžia įtraukti naujus metodus į esamą klasę ar struktūrą nekeičiant pradinio tipo šaltinio kodo ir jums nereikia jokio specialaus leidimo iš pradinio tipo ir nereikia iš naujo kompiliuoti pradinio tipo . Jis įvedamas į C# 3.0 .
Aptarkime šią sąvoką pavyzdžiu. Tarkime, kad turite klasę arba struktūrą, kurioje yra trys metodai, ir į šią klasę ar struktūrą norite įtraukti du naujus metodus, neturite klasės / struktūros šaltinio kodo arba neturite klasės / struktūros leidimų, arba klasė yra uždara klasė, bet vis tiek norite į ją įtraukti naujų metodų, tada galite naudoti koncepcijos išplėtimo metodą, kad pridėtumėte naują metodą esamoje klasėje / struktūroje.
rasti eilutėje c++
Dabar sukuriate naują klasę, kuri yra statinė ir kurioje yra du metodai, kuriuos norite pridėti prie esamos klasės, dabar susiekite šią klasę su esama klase. Susieję pamatysite, kad esama klasė gali pasiekti du naujai pridėtus metodus. Kaip parodyta toliau pateiktoje programoje.

Pavyzdys:
Pirmiausia sukuriame klasę pavadinimu kaip Moksiukas in Program1.cs failą. Jame yra trys metodai M1() , M2() , ir 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"); } } }> Dabar sukuriame statinę klasę, pavadintą NewMethodClass in Program2.cs failą. Jame yra du metodai, kurie yra M4() ir M5() . Dabar norime įtraukti šiuos metodus Moksiukas klasėje, todėl naudojame privalomasis parametras susieti šiuos metodus su Geek klase. Po to sukuriame kitą, pavadintą GFG, kuriame Geek klasė pasiekia visus penkis metodus.>
// 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"); } } }> Išvestis:
Method Name: M1 Method Name: M2 Method Name: M3 Method Name: M4 Method Name: M5>
Svarbūs punktai:
- Čia Įrišimo parametrai yra tie parametrai, kurie naudojami naujam metodui susieti su esama klase ar struktūra. Jis neturi reikšmės, kai iškviečiate plėtinio metodą, nes jie naudojami tik susiejimui, o ne jokiam kitam naudojimui. Išplėtimo metodo parametrų sąraše įrišimo parametras visada yra pirmoje vietoje, jei rašote įrišimo parametrą antroje, trečioje arba bet kurioje kitoje vietoje, o ne pirmoje vietoje, tada kompiliatorius parodys klaidą. Įrišimo parametras sukuriamas naudojant šį raktinį žodį, po kurio nurodomas klasės, kurioje norite įtraukti naują metodą, pavadinimas ir parametro pavadinimas. Pavyzdžiui:
this Geek g>
Čia tai raktinis žodis naudojamas įrišimui, Moksiukas yra klasės pavadinimas, kurį norite susieti, ir g yra parametro pavadinimas. - Išplėtimo metodai visada apibrėžiami kaip statinis metodas, tačiau susieti su kokia nors klase ar struktūra jie paverčiami nestatiniais metodais.
- Kai išplėtimo metodas yra apibrėžtas tuo pačiu pavadinimu ir esamo metodo parašu, kompiliatorius išspausdins esamą metodą, o ne išplėtimo metodą. Kitaip tariant, išplėtimo metodas nepalaikomas metodo viršenybė .
- Taip pat galite pridėti naujų metodų uždara klasė taip pat naudojant išplėtimo metodo koncepciją.
- Jis negali būti taikomas laukams, savybių , arba įvykius.
- Jis turi būti apibrėžtas aukščiausio lygio statinėje klasėje.
- Neleidžiami keli susiejimo parametrai, tai reiškia, kad išplėtimo metodą sudaro tik vienas susiejimo parametras. Tačiau išplėtimo metodu galite apibrėžti vieną ar daugiau įprastų parametrų.
Privalumai:
- Pagrindinis išplėtimo metodo pranašumas yra įtraukti naujus metodus į esamą klasę nenaudojant paveldėjimo .
- Į esamą klasę galite įtraukti naujų metodų nekeisdami esamos klasės šaltinio kodo.
- Taip pat gali dirbti su uždara klasė .