Warum können keine anonymen Methoden Variablen zugewiesen werden, die auf den impliziten Typ „Var“ abgeleitet werden?
Bedenken Sie den folgenden Code:
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
Dieser Code wird erfolgreich kompiliert, da der abgeleitete Typ des Lambda-Ausdrucks ein Func-Delegat ist. Der folgende Code wird jedoch nicht kompiliert:
var comparer = delegate(string value) { return value != "0"; };
Der Compiler kann in diesem Fall nicht auf den Delegate-Typ für den Lambda-Ausdruck schließen. Dies liegt daran, dass es unendlich viele mögliche Delegatentypen gibt, die abgeleitet werden könnten, und der Compiler nicht über genügend Kontext verfügt, um zu bestimmen, welcher davon beabsichtigt ist.
Zum Beispiel könnte der Lambda-Ausdruck vom Typ Func
Um dieses Problem zu beheben, geben Sie explizit den Delegatentyp für an Lambda-Ausdruck:
var comparer = (Func<string, bool>)delegate(string value) { return value != "0"; };
Mit dieser Änderung wird der Code kompiliert erfolgreich ausgeführt, und der abgeleitete Typ des Lambda-Ausdrucks ist Func
Das obige ist der detaillierte Inhalt vonWarum können implizit typisierte Variablen („var') keine anonymen Methoden ohne explizite Typdeklaration enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!