Единственная проблема, связанная с циклом, состоит в том, что если вы используете анонимные методы, которые ссылаются на переменные цикла, каждый раз вокруг цикла будет создаваться экземпляр объекта анонимного метода, но все они будут ссылаться на одну и ту же переменную цикла, поэтому они увидит, как он изменит свое значение при выполнении цикла. Поэтому сделайте копию переменной цикла внутри цикла.
foreach (var thing in collection)
{
var copy = thing;
Action a = () =>
{
// refer to copy, not thing
}
}
2017-04-25: Кстати, эта проблема была решена в C # 5.0. foreach
автоматически выполняет вышеуказанное преобразование.