2016-07-17 23 views
0

haben Lets:Verwendung list.ForEach in C#

List<double> inputs,outputs; 

einen Unterschied zwischen diesen:

inputs.Clear(); 
outputs.ForEach(inputs.Add); 

und diese:

inputs.Clear(); 
outputs.ForEach(x => inputs.Add(x)); 

1) Ich gehe davon aus, dass beide Optionen Zuerst löschen Sie die Liste der Eingänge und dann nehmen Sie alle Werte in der Liste der Ausgänge und legen Sie sie in die Liste der Eingänge.
2) Beide Optionen sehen aus, als wären sie gleichwertig. Habe ich recht? Gibt es einen Unterschied zwischen ihnen?

+2

Sie werden nach dem gleichen Code kompiliert werden. Die erste Form, die Sie verwendet haben, heißt Methodengruppe. –

+0

Mögliches Duplikat von [Was ist eine Methodengruppe in C#?] (Http://stackoverflow.com/questions/886822/what-is-a-method-group-in-c) – Win

+3

Äquivalent. Aber ich denke, das Lambda ist lesbarer als die Methodengruppe. –

Antwort

2

Nein, es gibt keinen Unterschied. Sie werden höchstwahrscheinlich zu demselben IL-Code kompiliert.

jedoch meiner Meinung nach, diese Form

inputs.Clear(); 
outputs.ForEach(x => inputs.Add(x)); 

zeigt Ihre deutliche Absicht. Vermutlich würde ich dies jedoch komplett vermeiden und einfach eine foreach Schleife verwenden, um jedes Element zu inputs hinzuzufügen. Letztendlich kommt es aber auf Ihre persönlichen Vorlieben an.

+1

Wenn Sie in Ihrem Code mehrere ForEach'es verwenden, würde es hinsichtlich der Lesbarkeit hilfreich sein, das eine oder das andere zu verwenden. –

+0

@RobertColumbia Ja, guter Punkt. Aber ich werde es nicht vermischen. Ich wollte nur das Verhalten dieser Konstruktionen wissen, weil sie neu für mich sind. – user1097772