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
Libérer: 2024-12-29 03:53:10
original
790 Les gens l'ont consulté

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";
}
Copier après la connexion

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

Func comparer = delegate(string value) {
    return value != "0";
};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal