Проблема, которую я нахожу с этой конкретной рекомендацией / предупреждением, заключается в том, что разработчики, которые «исправляют это», часто заканчивают тем, что часто кодируют ненужные копии, а не используют ссылку на исходную коллекцию. Например, у меня есть следующая строка:
myThing.Items = GetItems();
И разработчик исправляет это:
var items = GetItems();
foreach (var item in items)
{
myThing.Items.Add(item);
}
Представьте, что GetItems () возвращает коллекцию из миллиона элементов. Как это может быть хорошо? Я нахожу заявление Microsoft: «Не исключайте предупреждение из этого правила». в MSDN быть немного сильным!