Heim > Backend-Entwicklung > C++ > Warum kann ich „var' in C# keine anonymen Methoden zuweisen?

Warum kann ich „var' in C# keine anonymen Methoden zuweisen?

Susan Sarandon
Freigeben: 2025-01-02 17:10:42
Original
628 Leute haben es durchsucht

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

Einschränkungen der Zuweisung anonymer Methoden zu var

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";
};
Nach dem Login kopieren

Dieser Code wird erfolgreich kompiliert, da die anonyme Methode explizit einem Func zugewiesen wird. delegieren. Der folgende Code löst jedoch einen Compilerfehler aus:

var comparer = delegate(string value) {
    return value != "0";
};
Nach dem Login kopieren

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 als beabsichtigter Delegattyp würde es zu Inkonsistenzen in Fällen kommen, in denen die anonyme Methode eine andere Anzahl von Parametern hat. Beispielsweise würde der folgende Code auch zu einem Func kompiliert werden. Delegat:

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};
Nach dem Login kopieren

Dies macht jedoch keinen Sinn, da Func Delegaten unterstützen in .NET 3.5 nur bis zu vier Argumente.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage