13 Stimmen

Gibt es einen Fall, in dem Delegat Syntax über Lambda-Ausdruck für anonyme Methoden bevorzugt wird?

Bedeutet die Einführung neuer Funktionen wie Lambda-Ausdrücke (Inline-Code), dass wir keine Delegierten oder anonymen Methoden mehr verwenden müssen? In fast allen Beispielen, die ich gesehen habe, ist es für die Neuschreibung mit der neuen Syntax.

Jeder Ort, wo wir immer noch Delegaten und Lambda-Ausdrücke verwenden müssen wird nicht funktionieren?

0 Stimmen

3voto

Martin C. Punkte 11382

Lambda-Ausdrücke sind nur "syntaktischer Zucker", der Compiler wird entsprechende Delegierte für Sie erzeugen. Sie können dies mit dem Reflector von Lutz Roeder untersuchen.

1 Stimmen

Eigentlich sind Lambda-Ausdrücke etwas mehr als nur syntaktischer Zucker, da sie zu einem Ausdrucksbaum kompiliert und manipuliert werden können.

3voto

sontek Punkte 11413

Lamda's sind nur syntaktischer Zucker für Delegierte, sie sind nicht nur inline, können Sie das folgende tun:

s.Find(a =>
{
    if (a.StartsWith("H"))
        return a.Equals("HI");
    else
        return !a.Equals("FOO");
});

Und Delegierte werden immer noch bei der Definition von Ereignissen verwendet, oder wenn Sie viele Argumente haben und die aufgerufene Methode tatsächlich stark typisieren wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X