Maison > développement back-end > C++ > Pourquoi ne puis-je pas attribuer des méthodes anonymes à « var » en C# ?

Pourquoi ne puis-je pas attribuer des méthodes anonymes à « var » en C# ?

Susan Sarandon
Libérer: 2025-01-02 17:10:42
original
628 Les gens l'ont consulté

Why Can't I Assign Anonymous Methods to `var` in C#?

Limitations de l'affectation de méthodes anonymes à var

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

Ce code est compilé avec succès, car la méthode anonyme est explicitement affectée à un Func déléguer. Cependant, le code suivant génère une erreur de compilation :

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

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 en tant que type de délégué prévu, cela créerait des incohérences dans les cas où la méthode anonyme a un nombre différent de paramètres. Par exemple, le code suivant serait également compilé en Func délégué :

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};
Copier après la connexion

Cependant, cela n'a pas de sens car Func les délégués ne prennent en charge que jusqu'à quatre arguments dans .NET 3.5.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal