Maison > développement back-end > C++ > Pourquoi les variables typées implicitement (« var ») ne peuvent-elles pas contenir de méthodes anonymes sans déclaration de type explicite ?

Pourquoi les variables typées implicitement (« var ») ne peuvent-elles pas contenir de méthodes anonymes sans déclaration de type explicite ?

Mary-Kate Olsen
Libérer: 2024-12-31 19:25:10
original
600 Les gens l'ont consulté

Why Can't Implicitly Typed Variables ('var') Hold Anonymous Methods Without Explicit Type Declaration?

Pourquoi les méthodes anonymes ne peuvent-elles pas être attribuées aux variables déduites du type implicite 'Var' ?

Considérez le code suivant :

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

Ce code se compile avec succès car le type déduit de l'expression lambda est un Func délégué. Cependant, le code suivant ne compile pas :

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

Le compilateur ne peut pas déduire le type de délégué pour l'expression lambda dans ce cas. En effet, il existe une infinité de types de délégués possibles qui pourraient être déduits et le compilateur n'a pas suffisamment de contexte pour déterminer lequel est destiné.

Par exemple, l'expression lambda pourrait être de type Func, Prédicat ou Action. De plus, l'expression lambda peut être du type Expression>, qui représente un arbre d'expressionではなく、委任型です。

Pour résoudre ce problème, spécifiez explicitement le type de délégué pour le expression lambda :

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

Avec ce changement, le le code sera compilé avec succès et le type déduit de l'expression lambda sera Func.

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