Heim >Backend-Entwicklung >C++ >Warum kann ich einer „var'-Variablen in C# keine anonyme Methode zuweisen?

Warum kann ich einer „var'-Variablen in C# keine anonyme Methode zuweisen?

DDD
DDDOriginal
2024-12-29 03:53:10775Durchsuche

Why Can't I Assign an Anonymous Method to a `var` Variable in C#?

Warum eine anonyme Methode nicht Var zugewiesen werden kann

Wenn Sie auf eine anonyme Methode stoßen wie:

delegate(string value) {
    return value != "0";
}

Der Compiler ist vor einer Herausforderung stehen. Im Gegensatz zu einem typisierten Lambda-Ausdruck wie:

Func comparer = delegate(string value) {
    return value != "0";
};

Die anonyme Methode gibt nicht explizit einen Delegatentyp an. Der Compiler muss diesen Typ anhand der Signatur der Methode ableiten. Es gibt jedoch unendlich viele potenzielle Delegatentypen, die diese Bedingungen erfüllen, mit unterschiedlichen Parametern und Rückgabewerten.

Das Ableiten des Typs für eine anonyme Methode bringt mehrere Probleme mit sich:

  • Fehlen der Konsistenz: Das Zuweisen eines Lambda-Ausdrucks zu var impliziert einen Rückschluss auf den Func Typ. Bei anonymen Methoden gibt es jedoch keinen solchen Vorrang, was zu Inkonsistenzen bei der Behandlung von Fällen mit mehreren Argumenten führt.
  • Mehrdeutigkeit: In Fällen wie var x2 = y => 123, der Compiler kann den Parametertyp nicht bestimmen.
  • Undefinierter Rückgabetyp: Einige anonyme Methoden haben nicht spezifizierte Rückgabetypen, bei denen es sich um beliebige Referenzen oder nullbare Werttypen handeln kann.
  • Unbestimmter Funktionsumfang: Anweisungs-Lambdas und Funktionen können in Fällen wie var x5 = (int y) => q = y.
  • Spezielle Syntax und Einschränkung: Die Verwendung anonymer Methoden erfordert das Schlüsselwort „delegate“, was im Vergleich zu Lambda-Ausdrücken unnötige Syntax hinzufügt. Dem Delegatenformular fehlen auch Funktionen wie Ausdrucksbäume und Nachrichtenübermittlung.

Daher verhindert der Compilerfehler „Eine anonyme Methode kann einer implizit typisierten lokalen Variablen nicht zugewiesen werden“ die Verwendung von var mit anonymen Methoden.

Das obige ist der detaillierte Inhalt vonWarum kann ich einer „var'-Variablen in C# keine anonyme Methode zuweisen?. 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