Jag gillar inte foreach, för den gör en kopia på varje objekt när du loopar. Med en string är det kanske inget större problem, men om det är ett mer avancerat objekt så tar det ju en stund att göra kopian.
Det stämmer inte. "The iteration variable corresponds to a read-only local variable with a scope that extends over the embedded statement." https://msdn.microsoft.com/en-us/library/aa664754%28v=vs.71%2...
Testa till exempel
class Program
{
static void Main(string[] args)
{
var p1 = new Person { Name = "aaa" };
var p2 = new Person { Name = "bbb" };
var persons = new List<Person> { p1, p2 };
foreach(var p in persons)
{
p.Name = "changed";
}
Console.WriteLine(p1.Name);
}
}
public class Person
{
public string Name { get; set; }
}