Maison >développement back-end >C++ >Pourquoi ne puis-je pas attribuer une méthode anonyme à une variable « var » en C# ?

Pourquoi ne puis-je pas attribuer une méthode anonyme à une variable « var » en C# ?

DDD
DDDoriginal
2024-12-29 03:53:10778parcourir

Why Can't I Assign an Anonymous Method to a `var` Variable in C#?

Pourquoi la méthode anonyme ne peut pas être attribuée à Var

Lorsque vous rencontrez une méthode anonyme comme :

delegate(string value) {
    return value != "0";
}

Le compilateur est confronté à un défi. Contrairement à une expression lambda typée telle que :

Func comparer = delegate(string value) {
    return value != "0";
};

La méthode anonyme ne spécifie pas explicitement de type de délégué. Le compilateur doit déduire ce type en fonction de la signature de la méthode. Cependant, il existe une infinité de types de délégués potentiels qui satisfont à ces conditions, avec des paramètres et des valeurs de retour variables.

Déduire le type d'une méthode anonyme présente plusieurs problèmes :

  • Manque de cohérence : L'attribution d'une expression lambda à var implique une inférence au Func taper. Cependant, avec les méthodes anonymes, une telle priorité n'existe pas, ce qui entraîne des incohérences dans la gestion des cas à arguments multiples.
  • Ambiguïté : Dans des cas comme var x2 = y => 123, le compilateur ne peut pas déterminer le type de paramètre.
  • Type de retour non défini : Certaines méthodes anonymes ont des types de retour non spécifiés, qui peuvent être n'importe quel type de référence ou de valeur nullable.
  • Portée de la fonction indéterminable : Les lambdas et les fonctions des instructions ne peuvent pas être distinguées dans des cas comme var x5 = (int y) => q = y.
  • Syntaxe spéciale et limitation : L'utilisation de méthodes anonymes nécessite le mot-clé délégué, ajoutant une syntaxe inutile par rapport aux expressions lambda. Le formulaire délégué manque également de fonctionnalités telles que les arbres d'expression et le passage de messages.

Par conséquent, l'erreur du compilateur « Impossible d'attribuer une méthode anonyme à une variable locale implicitement typée » empêche l'utilisation de var avec des méthodes anonymes.

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