En C#, les méthodes anonymes offrent un moyen pratique de définir des fonctions en ligne. Bien que ces méthodes puissent être facilement attribuées à des types délégués, tenter de les attribuer à des variables typées implicitement (à l'aide de var) entraîne souvent des erreurs de compilation.
Considérez l'exemple de code suivant :
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
Ce code est compilé avec succès, car la méthode anonyme est explicitement affectée à un Func
var comparer = delegate(string value) { return value != "0"; };
Erreur :
Impossible d'attribuer une méthode anonyme à une variable locale implicitement typée.
Cette erreur se produit car le le compilateur ne peut pas déduire le type de la méthode anonyme. Il existe un nombre infini de types de délégués possibles qu'il pourrait représenter, notamment Func, Predicate, Action et d'innombrables autres.
De plus, même si le compilateur a déduit Func
var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; };
Cependant, cela n'a pas de sens car Func
Pour résoudre ce problème et garantir que la méthode anonyme est compilée avec le type de délégué correct, il est nécessaire de spécifier explicitement le type de délégué dans l'instruction d'affectation, comme on le voit dans le premier exemple de code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!