logo

Tilläggsmetod i C#

I C# är förlängningsmetod konceptet låter dig lägga till nya metoder i den befintliga klassen eller i strukturen utan att ändra källkoden för den ursprungliga typen och du behöver ingen form av speciell tillstånd från den ursprungliga typen och det finns inget behov av att kompilera om den ursprungliga typen . Det introduceras i C# 3.0 .

Låt oss diskutera detta koncept med hjälp av ett exempel. Anta att du har en klass eller en struktur som innehåller tre metoder och du vill lägga till två nya metoder i den här klassen eller strukturen, att du inte har källkoden för klassen/strukturen eller inte har behörigheter från klassen/strukturen, eller klassen är en förseglad klass, men du vill fortfarande lägga till nya metoder i den, då kan du använda konceptförlängningsmetoden för att lägga till den nya metoden i den befintliga klassen/strukturen.



hur man genererar slumptal i java

Nu skapar du en ny klass som är statisk och innehåller de två metoderna som du vill lägga till i den befintliga klassen, bind nu denna klass med den befintliga klassen. Efter bindning kommer du att se att den befintliga klassen kan komma åt de två nyligen tillagda metoderna. Som visas i programmet nedan.

Exempel:

Först skapar vi en klass som heter som Nörd i Program1.cs fil. Den innehåller tre metoder dvs M1() , M2() , och 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"); } } }>

Nu skapar vi en statisk klass som heter NewMethodClass i Program2.cs fil. Den innehåller två metoder som är M4() och M5() . Nu vill vi lägga till dessa metoder Nörd klass, så vi använder bindningsparameter för att binda dessa metoder med Geek-klassen. Efter det skapar vi en annan som heter GFG där Geek-klassen får tillgång till alla fem metoderna.>

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

Produktion:

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

Viktiga punkter:



  • Här, Bindande parametrar är de parametrar som används för att binda den nya metoden med den befintliga klassen eller strukturen. Det tar inget värde när du anropar förlängningsmetoden eftersom de endast används för bindning och inte för någon annan användning. I parameterlistan för förlängningsmetoden är bindningsparametern alltid närvarande i första hand om du skriver bindningsparameter till andra, eller tredje, eller någon annan plats istället för första plats så kommer kompilatorn att ge ett fel. Bindningsparametern skapas med detta nyckelord följt av namnet på klassen där du vill lägga till en ny metod och parameternamnet. Till exempel:
    this Geek g>
    Här, detta nyckelord används för bindning, Nörd är klassnamnet som du vill binda till, och g är parameternamnet.
  • Tilläggsmetoder definieras alltid som en statisk metod, men när de är bundna med någon klass eller struktur kommer de att omvandlas till icke-statiska metoder.
  • När en tilläggsmetod är definierad med samma namn och signaturen för den befintliga metoden, kommer kompilatorn att skriva ut den befintliga metoden, inte tilläggsmetoden. Eller med andra ord, förlängningsmetoden stöder inte metod åsidosättande .
  • Du kan också lägga till nya metoder i förseglad klass använder också ett förlängningsmetodkoncept.
  • Det kan inte gälla fält, egenskaper eller händelser.
  • Den måste definieras i statisk klass på högsta nivå.
  • Flera bindningsparametrar är inte tillåtna betyder att en förlängningsmetod endast innehåller en enda bindningsparameter. Men du kan definiera en eller flera normala parametrar i förlängningsmetoden.

Fördelar:

  • Den största fördelen med tilläggsmetoden är att lägga till nya metoder i den befintliga klassen utan att använda arv .
  • Du kan lägga till nya metoder i den befintliga klassen utan att ändra källkoden för den befintliga klassen.
  • Det kan också fungera med förseglad klass .