Les méthodes anonymes C# : Simplifier l'utilisation des délégués
Nous avons vu que les délégués sont utilisés pour référencer toute méthode ayant la même signature que le délégué. En d'autres termes, vous pouvez appeler une méthode qui peut être référencée par un délégué en utilisant cet objet délégué.
Les méthodes anonymes fournissent une technique pour passer un bloc de code en tant que paramètre de délégué. Les méthodes anonymes sont des méthodes sans nom, seulement le corps.
Vous n'avez pas besoin de spécifier le type de retour dans une méthode anonyme ; il est déduit de l'instruction return à l'intérieur du corps de la méthode.
Écriture d'une méthode anonyme
Les méthodes anonymes sont déclarées lors de la création de l'instance du délégué, avec le mot-clé delegate. Par exemple :
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x) {
Console.WriteLine("Méthode anonyme : {0}", x);
};
Le bloc de code Console.WriteLine("Méthode anonyme : {0}", x); est le corps de la méthode anonyme.
Le délégué peut être appelé aussi bien avec des méthodes anonymes qu'avec des méthodes nommées de la même manière, c'est-à-dire en passant les paramètres de la méthode à l'objet délégué.
Par exemple :
nc(10);
Exemple
L'exemple suivant démontre le concept :
Démonstration en directusing System;
delegate void NumberChanger(int n);
namespace DelegateAppl {
class TestDelegate {
static int num = 10;
public static void AddNum(int p) {
num += p;
Console.WriteLine("Méthode nommée : {0}", num);
}
public static void MultNum(int q) {
num *= q;
Console.WriteLine("Méthode nommée : {0}", num);
}
public static int getNum() {
return num;
}
static void Main(string[] args) {
// Création d'instances de délégués en utilisant une méthode anonyme
NumberChanger nc = delegate(int x) {
Console.WriteLine("Méthode anonyme : {0}", x);
};
// Appel du délégué en utilisant la méthode anonyme
nc(10);
// Instanciation du délégué en utilisant les méthodes nommées
nc = new NumberChanger(AddNum);
// Appel du délégué en utilisant les méthodes nommées
nc(5);
// Instanciation du délégué en utilisant une autre méthode nommée
nc = new NumberChanger(MultNum);
// Appel du délégué en utilisant les méthodes nommées
nc(2);
Console.ReadKey();
}
}
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Méthode anonyme : 10 Méthode nommée : 15 Méthode nommée : 30
Langue C
- Maîtriser les classes et méthodes abstraites C# : Guide pratique
- Comprendre les classes et méthodes partielles C#
- Maîtriser les classes et méthodes sealed en C# : Quand les utiliser, exemples clairs et sécurité du code
- Maîtriser la surcharge de méthodes en C# : Concepts, exemples et bonnes pratiques
- Fonctions lambda en Python : Guide pratique des fonctions anonymes
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Java 8 : Méthodes par défaut (default) dans les interfaces — Compatibilité ascendante
- Méthodes C# : définition, appel et utilisation des fonctions
- Comprendre les délégués C# : Guide des références de fonctions et des événements