foreach vs someList.ForEach () {} - PullRequest
       43

foreach vs someList.ForEach () {}

139 голосов
/ 22 октября 2008

Существует много способов перебора коллекции. Любопытно, есть ли какие-либо различия или почему вы бы использовали один способ по сравнению с другим.

Первый тип:

List<string> someList = <some way to init>
foreach(string s in someList) {
   <process the string>
}

Другой способ:

List<string> someList = <some way to init>
someList.ForEach(delegate(string s) {
    <process the string>
});

Полагаю, что вместо того анонимного делегата, которого я использую выше, у вас будет делегат многократного использования, который вы можете указать ...

Ответы [ 12 ]

1 голос
/ 22 октября 2008

С одной стороны, следует опасаться выхода из универсального метода .ForEach. Хотя ссылка, кажется, говорит, что этот путь самый быстрый. Не уверен почему - вы могли бы подумать, что они будут эквивалентны после компиляции ...

1 голос
/ 22 октября 2008

Второй способ, который вы показали, использует метод расширения для выполнения метода делегата для каждого из элементов в списке.

Таким образом, у вас есть другой вызов делегата (= метода).

Кроме того, существует возможность повторения списка с циклом для .

...