Объекты определенного типа в foreach из IEnumerable

Я работаю с устаревшим объектом коллекции, который реализует только неуниверсальные IEnumerable и ICollection . Что именно происходит с этим объектом, когда я пытаюсь использовать этот объект с foreach , задающим более конкретный тип в левой части выражения foreach?

// LegacyFooCollection implements non-generic IEnumerable
LegacyFooCollection collection = GetFooCollection();
foreach (Foo f in collection)
{
    // etc.
}

Я знаю (потому что пробовал), что это безопасно, если все в коллекции действительно имеет тип Foo , но что произойдет, если это не удастся?

9
задан JSBձոգչ 23 August 2011 в 18:22
поделиться