Heim >Backend-Entwicklung >C++ >Warum können anonyme Methoden in C# nicht direkt „var' zugewiesen werden?

Warum können anonyme Methoden in C# nicht direkt „var' zugewiesen werden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 01:19:10255Durchsuche

Why Can't Anonymous Methods Be Assigned Directly to `var` in C#?

Warum anonyme Methoden nicht var zugewiesen werden können

Im bereitgestellten Code schlägt die Kompilierung der Zuweisung der anonymen Methode zur Variable var fehl aufgrund der Mehrdeutigkeit beim Ableiten des Delegatentyps.

Anonyme Methoden können Delegatentypen zugewiesen werden, z Func oder Aktion. Bei der Zuweisung zu var kann der Compiler jedoch nicht bestimmen, welcher Delegate-Typ verwendet werden soll. Dies liegt daran, dass es unendlich viele mögliche Delegatentypen gibt und speziell für Lambdas unklar ist, ob die Absicht besteht, die Delegatenform oder die Ausdrucksbaumform zu verwenden.

Außerdem, selbst wenn der Compiler darauf schließen könnte Da es sich hierbei um einen Delegate-Typ handelt, kann dies zu Inkonsistenzen führen. Unter der Annahme, dass die Variablenzuweisung beispielsweise erfolgreich kompiliert wurde, würde der folgende Code keinen Sinn mehr ergeben:

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

Dies liegt daran, dass Func<> Lässt in .NET 3.5 nur bis zu vier Argumente zu, daher würde die Typinferenz nicht mit dem tatsächlichen Verhalten übereinstimmen.

Um diese Mehrdeutigkeit aufzulösen, ist es notwendig, den Delegattyp explizit anzugeben, wenn anonyme Methoden zu Variablen zugewiesen werden. Dadurch wird Klarheit und Konsistenz im Code gewährleistet.

Das obige ist der detaillierte Inhalt vonWarum können anonyme Methoden in C# nicht direkt „var' zugewiesen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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