Heim > Backend-Entwicklung > C++ > Warum können implizit typisierte Variablen („var') keine anonymen Methoden ohne explizite Typdeklaration enthalten?

Warum können implizit typisierte Variablen („var') keine anonymen Methoden ohne explizite Typdeklaration enthalten?

Mary-Kate Olsen
Freigeben: 2024-12-31 19:25:10
Original
597 Leute haben es durchsucht

Why Can't Implicitly Typed Variables ('var') Hold Anonymous Methods Without Explicit Type Declaration?

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

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

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, Predicate oder Action. Darüber hinaus könnte der Lambda-Ausdruck vom Typ Expression> sein, der einen Ausdrucksbaum darstellt.

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

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!

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