logo

Metoda rozšíření v C#

V C# je metoda rozšíření koncept vám umožňuje přidávat nové metody do stávající třídy nebo do struktury bez úpravy zdrojového kódu původního typu a nepotřebujete žádné zvláštní oprávnění od původního typu a není třeba znovu kompilovat původní typ . Je představen v C# 3.0 .

Proberme tento koncept pomocí příkladu. Předpokládejme, že máte třídu nebo strukturu, která obsahuje tři metody a chcete do této třídy nebo struktury přidat dvě nové metody, nemáte zdrojový kód třídy/struktury nebo nemáte oprávnění od třídy/struktury, nebo třída je uzavřená třída, ale přesto do ní chcete přidat nové metody, pak můžete použít metodu rozšíření konceptu k přidání nové metody do existující třídy/struktury.



sady v Javě

Nyní vytvoříte novou třídu, která je statická a obsahuje dvě metody, které chcete přidat do existující třídy, nyní svažte tuto třídu s existující třídou. Po navázání uvidíte, že existující třída má přístup ke dvěma nově přidaným metodám. Jak je uvedeno v programu níže.

Příklad:

Nejprve vytvoříme třídu s názvem as Geek v Program1.cs soubor. Obsahuje tři metody, tj M1() , M2() , a 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"); } } }>

Nyní vytvoříme statickou třídu s názvem NewMethodClass in Program2.cs soubor. Obsahuje dvě metody, které jsou M4() a M5() . Nyní chceme tyto metody přidat Geek třídy, takže používáme parametr vazby spojit tyto metody s třídou Geek. Poté vytvoříme další s názvem GFG, ve kterém třída Geek přistupuje ke všem pěti metodám.>

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"); } } }>

Výstup:

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

Důležité body:



  • Tady, Parametry vazby jsou ty parametry, které se používají k propojení nové metody s existující třídou nebo strukturou. Nemá žádnou hodnotu, když voláte metodu rozšíření, protože se používají pouze pro vazbu, nikoli pro žádné jiné použití. V seznamu parametrů metody rozšíření je parametr vazby vždy na prvním místě, pokud napíšete parametr vazby na druhé, třetí nebo jakékoli jiné místo, nikoli na první místo, pak kompilátor oznámí chybu. Parametr vazby je vytvořen pomocí tohoto klíčového slova následovaného názvem třídy, do které chcete přidat novou metodu, a názvem parametru. Například:
    this Geek g>
    Tady, tento klíčové slovo se používá pro vazbu, Geek je název třídy, ve které se chcete svázat, a G je název parametru.
  • Metody rozšíření jsou vždy definovány jako statické metody, ale když jsou svázány s jakoukoli třídou nebo strukturou, převedou se na nestatické metody.
  • Když je metoda rozšíření definována se stejným názvem a podpisem existující metody, kompilátor vytiskne existující metodu, nikoli metodu rozšíření. Nebo jinými slovy, metoda rozšíření nepodporuje přeřazení metody .
  • Můžete také přidat nové metody v zapečetěná třída také pomocí konceptu metody rozšíření.
  • Nemůže se vztahovat na obory, vlastnosti nebo události.
  • Musí být definován ve statické třídě nejvyšší úrovně.
  • Více parametrů vazby není povoleno, znamená to, že metoda rozšíření obsahuje pouze jeden parametr vazby. V metodě rozšíření však můžete definovat jeden nebo více normálních parametrů.

výhody:

  • Hlavní výhodou metody rozšíření je přidání nových metod do existující třídy bez použití dědictví .
  • Do existující třídy můžete přidat nové metody, aniž byste museli upravovat zdrojový kód existující třídy.
  • Může také pracovat s zapečetěná třída .