En C#, le méthode d'extension le concept vous permet d'ajouter de nouvelles méthodes dans la classe existante ou dans la structure sans modifier le code source du type d'origine et vous n'avez besoin d'aucune sorte d'autorisation spéciale du type d'origine et il n'est pas nécessaire de recompiler le type d'origine . Il est introduit dans C#3.0 .
Discutons de ce concept à l'aide d'un exemple. Supposons que vous ayez une classe ou une structure qui contient trois méthodes et que vous souhaitiez ajouter deux nouvelles méthodes dans cette classe ou structure, que vous n'ayez pas le code source de la classe/structure ou que vous n'ayez pas les autorisations de la classe/structure, ou la classe est une classe scellée, mais vous souhaitez toujours y ajouter de nouvelles méthodes, vous pouvez alors utiliser la méthode d'extension de concept pour ajouter la nouvelle méthode dans la classe/structure existante.
remplacer la chaîne en java
Maintenant, vous créez une nouvelle classe statique et contient les deux méthodes que vous souhaitez ajouter à la classe existante, liez maintenant cette classe à la classe existante. Après la liaison, vous verrez que la classe existante peut accéder aux deux méthodes nouvellement ajoutées. Comme le montre le programme ci-dessous.

Exemple:
Nous créons d’abord une classe nommée Geek dans Programme1.cs déposer. Il contient trois méthodes qui sont M1() , M2() , et 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"); } } }> Maintenant, nous créons une classe statique nommée NewMethodClass dans Programme2.cs déposer. Il contient deux méthodes qui sont M4() et M5() . Nous voulons maintenant ajouter ces méthodes dans Geek classe, nous utilisons donc la paramètre de liaison pour lier ces méthodes avec la classe Geek. Après cela, nous en créons un autre nommé GFG dans lequel la classe Geek accède aux cinq méthodes.>
// 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"); } } }> Sortir:
Method Name: M1 Method Name: M2 Method Name: M3 Method Name: M4 Method Name: M5>
Les points importants:
- Ici, Paramètres de liaison sont les paramètres qui sont utilisés pour lier la nouvelle méthode à la classe ou à la structure existante. Cela ne prend aucune valeur lorsque vous appelez la méthode d'extension car elle est utilisée uniquement pour la liaison et non pour toute autre utilisation. Dans la liste des paramètres de la méthode d'extension, le paramètre de liaison est toujours présent à la première place. Si vous écrivez le paramètre de liaison au deuxième, au troisième, ou à tout autre endroit plutôt qu'à la première place, le compilateur générera une erreur. Le paramètre de liaison est créé à l'aide de ce mot-clé suivi du nom de la classe dans laquelle vous souhaitez ajouter une nouvelle méthode et du nom du paramètre. Par exemple:
this Geek g>
Ici, ce le mot-clé est utilisé pour la liaison, Geek est le nom de la classe dans laquelle vous souhaitez effectuer la liaison, et g est le nom du paramètre. - Les méthodes d'extension sont toujours définies comme une méthode statique, mais lorsqu'elles sont liées à une classe ou une structure, elles seront converties en méthodes non statiques.
- Lorsqu'une méthode d'extension est définie avec le même nom et la même signature que la méthode existante, le compilateur imprimera la méthode existante, pas la méthode d'extension. Ou en d'autres termes, la méthode d'extension ne prend pas en charge remplacement de méthode .
- Vous pouvez également ajouter de nouvelles méthodes dans le classe scellée utilisant également un concept de méthode d'extension.
- Cela ne peut pas s'appliquer aux champs, propriétés , ou des événements.
- Il doit être défini dans une classe statique de niveau supérieur.
- Plusieurs paramètres de liaison ne sont pas autorisés, ce qui signifie qu'une méthode d'extension ne contient qu'un seul paramètre de liaison. Mais vous pouvez définir un ou plusieurs paramètres normaux dans la méthode d'extension.
Avantages :
- Le principal avantage de la méthode d'extension est d'ajouter de nouvelles méthodes dans la classe existante sans utiliser héritage .
- Vous pouvez ajouter de nouvelles méthodes dans la classe existante sans modifier le code source de la classe existante.
- Il peut également fonctionner avec classe scellée .