Теоретически, если вы выполните запрос LINQ
для коллекции, она будет использовать функцию Lists GetEnumerator
, которая будет возвращать объект-перечислитель, который знает , как перечислить коллекцию без , используяпеременная, которая содержит ссылку на нее.
Вот почему в этом примере:
List<string> list = new List<string>() { "a", "b", "c", "d" };
Task.Run(() =>
{
list.Find(e =>
{
Console.WriteLine($"El:{e} Hashcode:{list.GetHashCode()}");
Thread.Sleep(750);
return e == "z";
}).ToList();
});
Task.Run(() =>
{
Thread.Sleep(1000);
list = new List<string>();
});
Console.ReadKey();
Вывод:
El:a Hashcode:63835064
El:b Hashcode:63835064
El:c Hashcode:11454272
El:d Hashcode:11454272