In C# bieten anonyme Methoden eine praktische Möglichkeit, Inline-Funktionen zu definieren. Während diese Methoden problemlos Delegatentypen zugewiesen werden können, führt der Versuch, sie implizit typisierten Variablen (mithilfe von var) zuzuweisen, häufig zu Compilerfehlern.
Betrachten Sie das folgende Codebeispiel:
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
Dieser Code wird erfolgreich kompiliert, da die anonyme Methode explizit einem Func
var comparer = delegate(string value) { return value != "0"; };
Fehler:
Eine anonyme Methode kann einer implizit typisierten lokalen Variablen nicht zugewiesen werden.
Dieser Fehler tritt auf, weil die Der Compiler kann den Typ der anonymen Methode nicht ableiten. Es gibt unendlich viele mögliche Delegatentypen, die es darstellen könnte, einschließlich Func, Predicate, Action und unzählige andere.
Außerdem gilt, selbst wenn der Compiler Func
var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; };
Dies macht jedoch keinen Sinn, da Func
Um dieses Problem zu beheben und sicherzustellen, dass die anonyme Methode zum richtigen Delegatentyp kompiliert wird, ist es notwendig, den Delegatentyp explizit in der Zuweisungsanweisung anzugeben. wie im ersten Codebeispiel zu sehen.
Das obige ist der detaillierte Inhalt vonWarum kann ich „var' in C# keine anonymen Methoden zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!