Es gibt bereits eine foreach
die in der Sprache enthalten ist, die in den meisten Fällen die Aufgabe erfüllt.
Ich würde es hassen, das Folgende zu sehen:
list.ForEach( item =>
{
item.DoSomething();
} );
Anstelle von:
foreach(Item item in list)
{
item.DoSomething();
}
Letztere ist klarer und leichter zu lesen in den meisten Situationen obwohl es vielleicht ein bisschen länger dauert, sie zu tippen.
Ich muss jedoch zugeben, dass ich meine Haltung in dieser Frage geändert habe; eine ForEach()
Erweiterungsmethode wäre in einigen Situationen tatsächlich nützlich.
Hier sind die wichtigsten Unterschiede zwischen der Erklärung und der Methode:
- Typüberprüfung: foreach wird zur Laufzeit ausgeführt,
ForEach()
ist zur Kompilierzeit (Großes Plus!)
- Die Syntax für den Aufruf eines Delegaten ist in der Tat viel einfacher: objects.ForEach(DoSomething);
- ForEach() könnte verkettet werden: obgleich die Schlechtigkeit/Nützlichkeit einer solchen Funktion zur Diskussion steht.
Das sind alles großartige Argumente, die hier von vielen gemacht wurden, und ich kann verstehen, warum die Leute die Funktion vermissen. Ich hätte nichts dagegen, wenn Microsoft bei der nächsten Iteration des Frameworks eine Standard-ForEach-Methode hinzufügen würde.