Junior
Qu'est-ce qu'un délégué en C#?
sobes.tech IA
Réponse de l'IA
Un délégué est un type de référence déclaré avec le mot-clé delegate. Il encapsule une méthode avec une signature spécifique (type de retour et types de paramètres). En essence, un délégué est un pointeur sécurisé vers une méthode.
Propriétés principales des délégués :
- Encapsulation des méthodes : Le délégué stocke des informations sur la méthode à laquelle il fait référence.
- Sécurité de type : Le délégué ne peut faire référence qu'à des méthodes dont la signature correspond exactement à celle du délégué.
- Multicast : Les délégués peuvent faire référence à plusieurs méthodes simultanément. Lorsqu'un délégué est invoqué, toutes les méthodes associées sont appelées dans l'ordre de leur ajout.
Exemple de déclaration et d'utilisation :
// Déclaration du délégué
public delegate int MyDelegate(int x, int y);
// Méthode correspondant à la signature du délégué
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
// Utilisation du délégué
public class Program
{
public static void Main(string[] args)
{
Calculator calc = new Calculator();
// Création d'une instance du délégué et liaison avec la méthode Add
MyDelegate del = new MyDelegate(calc.Add);
// Appel de la méthode via le délégué
int result = del(5, 3);
System.Console.WriteLine(result); // Affiche : 8
}
}
Avec l'apparition de .NET Framework 3.5 et LINQ, les délégués génériques intégrés ont été largement adoptés :
Action<T1, ..., Tn>: Délégué ne renvoyant pas de valeur (void). Peut accepter de 0 à 16 paramètres de types différents.Func<T1, ..., Tn, TResult>: Délégué renvoyant une valeur de typeTResult. Peut accepter de 0 à 16 paramètres de types différents.Predicate<T>: Délégué acceptant un paramètre de typeTet renvoyant une valeur booléenne. Utilisé pour la vérification de conditions.
Tableau comparatif des délégués intégrés :
| Délégué | Valeur de retour | Paramètres | Exemple d'utilisation |
|---|---|---|---|
Action |
void |
0..16 paramètres | Exécuter une action sans valeur de retour |
Func<TResult> |
TResult |
0 paramètres + valeur de retour TResult |
Calcul sans données d'entrée |
Func<T, TResult> |
TResult |
1 paramètre de type T + valeur de retour TResult |
Transformation de valeur |
Predicate<T> |
bool |
1 paramètre de type T |
Vérification de condition |
Les délégués sont largement utilisés dans la gestion d'événements, les opérations asynchrones, LINQ et pour la mise en œuvre de callbacks.