Просто чтобы было немного яснее, что написал Алиостад и что означают комментарии под этим ответом:
Итак, у вас есть этот код:
listView1.Columns.Add("S.No")
for(int i=0;i<MyList.Count;i++)
{
listView1.Columns.Add(MyList[i])
}
Как вы уже упоминали, вы можете написать это также с foreach
. Это будет выглядеть так:
listView1.Columns.Add("S.No")
foreach(var item in MyList)
{
listView1.Columns.Add(item)
}
Во втором примере он также перебирает список. Все, что он делает, это скрывает локальную переменную индекса i
.
В этом третьем примере вы не собираетесь скрывать и эту итерацию в функции, которая нуждается в действии, которое нужно делать с каждым элементом в списке:
listView1.Columns.Add("S.No")
MyList.ForEach(name => listView1.Columns.Add(name));
Под капотом он все еще перебирает все элементы и выполняет некоторую функциональность для каждого элемента. Вы просто не пишете цикл самостоятельно, но это не значит, что он в любом случае быстрее или лучше, чем ваш подход. Это просто еще один (более короткий) способ сказать, чего вы хотите достичь.