In C# is de uitbreiding methode concept stelt u in staat nieuwe methoden toe te voegen aan de bestaande klasse of in de structuur zonder de broncode van het originele type te wijzigen en u hebt geen enkele speciale toestemming van het originele type nodig en het is niet nodig om het originele type opnieuw te compileren . Het wordt geïntroduceerd C# 3.0 .
Laten we dit concept bespreken aan de hand van een voorbeeld. Stel dat je een klasse of structuur hebt die drie methoden bevat en je wilt twee nieuwe methoden toevoegen aan deze klasse of structuur, je beschikt niet over de broncode van de klasse/structuur of hebt geen rechten van de klasse/structuur, of de klasse is een verzegelde klasse, maar u wilt er toch nieuwe methoden aan toevoegen, dan kunt u de conceptuitbreidingsmethode gebruiken om de nieuwe methode aan de bestaande klasse/structuur toe te voegen.
Java-codering if else-instructie
Nu maak je een nieuwe klasse die statisch is en de twee methoden bevat die je aan de bestaande klasse wilt toevoegen. Bind nu deze klasse aan de bestaande klasse. Na het binden zul je zien dat de bestaande klasse toegang heeft tot de twee nieuw toegevoegde methoden. Zoals blijkt uit onderstaand programma.

Voorbeeld:
Eerst maken we een klasse met de naam as Gek in Programma1.cs bestand. Het bevat drie methoden M1() , M2() , En 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 maken we een statische klasse met de naam NewMethodClass in Programma2.cs bestand. Het bevat twee methoden die dat wel zijn M4() En M5() . Nu willen we deze methoden toevoegen Gek klasse, dus we gebruiken de bindende parameter om deze methoden te binden met de Geek-klasse. Daarna maken we er nog een met de naam GFG waarin de Geek-klasse toegang heeft tot alle vijf methoden.>
// 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"); } } }> Uitgang:
Method Name: M1 Method Name: M2 Method Name: M3 Method Name: M4 Method Name: M5>
Belangrijke punten:
- Hier, Bindende parameters zijn die parameters die worden gebruikt om de nieuwe methode aan de bestaande klasse of structuur te binden. Er is geen enkele waarde voor nodig als u de uitbreidingsmethode aanroept, omdat deze alleen voor binding wordt gebruikt en niet voor enig ander gebruik. In de parameterlijst van de extensiemethode is de bindingsparameter altijd aanwezig op de eerste plaats. Als u de bindingsparameter naar de tweede of derde plaats schrijft, of naar een andere plaats in plaats van de eerste plaats, zal de compiler een foutmelding geven. De bindingsparameter wordt gemaakt met dit trefwoord, gevolgd door de naam van de klasse waarin u een nieuwe methode wilt toevoegen en de parameternaam. Bijvoorbeeld:
this Geek g>
Hier, dit trefwoord wordt gebruikt voor binding, Gek is de klassenaam waarin u wilt binden, en G is de parameternaam. - Uitbreidingsmethoden worden altijd gedefinieerd als een statische methode, maar wanneer ze gebonden zijn aan een klasse of structuur, worden ze omgezet in niet-statische methoden.
- Wanneer een uitbreidingsmethode is gedefinieerd met dezelfde naam en de handtekening van de bestaande methode, zal de compiler de bestaande methode afdrukken, niet de uitbreidingsmethode. Of met andere woorden: de uitbreidingsmethode ondersteunt niet methode overschrijven .
- U kunt ook nieuwe methoden toevoegen in de verzegelde klasse ook gebruik makend van een uitbreidingsmethodeconcept.
- Het kan niet van toepassing zijn op velden, eigenschappen , of evenementen.
- Het moet worden gedefinieerd in de statische klasse op het hoogste niveau.
- Meerdere bindingsparameters zijn niet toegestaan, wat betekent dat een uitbreidingsmethode slechts één bindingsparameter bevat. Maar u kunt een of meer normale parameters definiëren in de uitbreidingsmethode.
Voordelen:
- Het belangrijkste voordeel van de uitbreidingsmethode is het toevoegen van nieuwe methoden aan de bestaande klasse zonder deze te gebruiken erfenis .
- U kunt nieuwe methoden aan de bestaande klasse toevoegen zonder de broncode van de bestaande klasse te wijzigen.
- Er kan ook mee gewerkt worden verzegelde klasse .