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"; };
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"; };
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
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"; };
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!