Erklären Sie x = x.ToString () // vereinfachen Sie so viele Aufrufe

7

In einer Fragenantwort finde ich folgenden Kodierungstipp: -

2) einfache Lambdas mit einem Parameter:

%Vor%

Als jemand, der 3.0 noch nicht benutzt hat, verstehe ich diesen Tipp nicht wirklich, aber er sieht interessant aus, deshalb würde ich mich über eine Erweiterung freuen, wie dies Anrufe mit ein paar Beispielen vereinfacht.

Ich habe lambdas recherchiert, also denke Ich weiß, was sie tun, aber ich kann das nicht verstehen, also könnte auch ein kleines Entpacken sein in Ordnung sein.

    
David Max 01.10.2008, 09:11
quelle

4 Antworten

21

Wenn Sie eine Instanz eines Delegaten mit einem einzigen Parameter erstellen müssen, können Sie mit Lambda-Ausdrücken diesen Delegaten sehr einfach "inline" erstellen. Zum Beispiel gibt es hier einen Code, um eine bestimmte Person in einer Liste mit ihrem Namen zu finden:

%Vor%

In C # 2.0 können Sie eine anonyme Methode verwenden, die ein wenig langsamer ist, aber nicht zu schlecht:

%Vor%

In C # 1.0 müssen Sie eine ganze zusätzliche Methode erstellen. Wenn Sie es außerdem parametrisieren möchten, müssen Sie einen anderen Typ erstellen, während anonyme Methoden und Lambda-Ausdrücke ihre ausführende Umgebung (lokale Variablen usw.) erfassen, so dass sie sich wie Schließungen verhalten:

%Vor%

Es gibt mehr darüber in meinem Artikel über Schließungen .

Obwohl das Delegieren von Delegaten in Methoden in C # 2.0 und .NET 2.0 nicht sehr häufig ist, ist es ein großer Teil der Basis von LINQ - daher neigen Sie dazu, es häufig in C # 3.0 mit .NET 3.5 zu verwenden.

>     
Jon Skeet 01.10.2008, 09:16
quelle
2

Dies erweitert sich im Grunde zu:

%Vor%     
Jacob 01.10.2008 09:12
quelle
1

Kennen Sie die anonymen C # 2.0-Methoden? Diese beiden Aufrufe sind äquivalent (vorausgesetzt, SomeMethod akzeptiert einen Delegaten usw.):

%Vor%

Ich weiß, was ich lieber tippen würde ...

    
Marc Gravell 01.10.2008 09:18
quelle
0
%Vor%     
Rinat Abdullin 01.10.2008 09:16
quelle

Tags und Links