Maison >développement back-end >C++ >Pourquoi les méthodes anonymes ne peuvent-elles pas être affectées directement à « var » en C# ?

Pourquoi les méthodes anonymes ne peuvent-elles pas être affectées directement à « var » en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 01:19:10255parcourir

Why Can't Anonymous Methods Be Assigned Directly to `var` in C#?

Pourquoi les méthodes anonymes ne peuvent pas être attribuées à var

Dans le code fourni, l'affectation de la méthode anonyme à la variable var ne parvient pas à compiler en raison de l'ambiguïté dans la déduction du type de délégué.

Des méthodes anonymes peuvent être attribuées aux types de délégué, tels que Func ou Action. Cependant, lors de l'affectation à var, le compilateur ne peut pas déterminer quel type de délégué utiliser. En effet, il existe une infinité de types de délégués possibles, et pour les lambdas en particulier, il n'est pas clair si l'intention est d'utiliser la forme déléguée ou la forme arborescente d'expression.

De plus, même si le compilateur pouvait déduire le type de délégué, cela pourrait conduire à des incohérences. Par exemple, en supposant que l'affectation var soit compilée avec succès, le code suivant n'aurait plus de sens :

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};

C'est parce que Func<> n'autorise que jusqu'à quatre arguments dans .NET 3.5, donc l'inférence de type ne correspondrait pas au comportement réel.

Pour résoudre cette ambiguïté, il est nécessaire de spécifier explicitement le type de délégué lors de l'attribution de méthodes anonymes aux variables. Cela garantit la clarté et la cohérence du 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn