Николай
В документации к for\in такого не видел. Ты же спец по стандартам, может там описана реализация for'а? )
Кстати нашел
If the assertion fails, the type tyexpr may also be of any static type that satisfies the “collection
pattern” of CLI libraries. If so, the enumerable extraction process is used to enumerate the type. In
particular, tyexpr may be any type that has an accessible GetEnumerator method that accepts zero
arguments and returns a value that has accessible MoveNext and Current properties. The type of pat
is the same as the return type of the Current property on the enumerator value. However, if the
Current property has return type obj and the collection type ty has an Item property with a more
specific (non-object) return type ty2, type ty2 is used instead, and a dynamic cast is inserted to
convert v.Current to ty2.