Duplicatas possibles :
Quand utiliseriez-vous les délégués en C# ?
Le but des délégués
J'ai vu de nombreuses questions concernant l'utilisation des délégués. Je ne sais toujours pas où et POURQUOI vous utilisez les délégués au lieu d'appeler la méthode directement.
J'ai entendu cette phrase à de nombreuses reprises : "L'objet délégué peut alors être passé au code qui peut appeler la méthode référencée, sans avoir à savoir au moment de la compilation quelle méthode sera invoquée."
Je ne comprends pas en quoi cette affirmation est correcte.
J'ai écrit les exemples suivants. Disons que vous avez 3 méthodes avec les mêmes paramètres :
public int add(int x, int y)
{
int total;
return total = x + y;
}
public int multiply(int x, int y)
{
int total;
return total = x * y;
}
public int subtract(int x, int y)
{
int total;
return total = x - y;
}
Maintenant je déclare un délégué :
public delegate int Operations(int x, int y);
Maintenant, je peux aller plus loin et déclarer un handler pour utiliser ce délégué (ou votre délégué directement).
Appelez le délégué :
MyClass f = new MyClass();
Operations p = new Operations(f.multiply);
p.Invoke(5, 5);
ou appeler avec le gestionnaire
f.OperationsHandler = f.multiply;
//just displaying result to text as an example
textBoxDelegate.Text = f.OperationsHandler.Invoke(5, 5).ToString();
Dans ces deux cas, je vois que ma méthode "multiplier" est spécifiée. Pourquoi les gens utilisent-ils l'expression "changer la fonctionnalité au moment de l'exécution" ou celle ci-dessus ?
Pourquoi utiliser les délégués si chaque fois que je déclare un délégué, il a besoin d'une méthode vers laquelle pointer ? Et s'il a besoin d'une méthode vers laquelle pointer, pourquoi ne pas simplement appeler cette méthode directement ? Il me semble que je dois écrire plus de code pour utiliser les délégués que pour utiliser directement les fonctions.
Quelqu'un peut-il me donner une situation réelle ? Je suis totalement perdue.