У меня есть следующий код:
IEnumerable<IList<MyClass>> myData = //...getMyData
foreach (MyClass o in myData)
{
// do something
}
Он компилируется, запускается и, очевидно, я получаю System.InvalidCastException
.Почему компилятор не жалуется?MyClass
- это простой компонент, без расширений.
Редактировать 1:Как предложил Дэвид, переключив тип с IList
на List
, компилятор жалуется
Редактировать 2:Я понял, что поведение такое, как указано в определении C # Language .Однако я не понимаю, почему такое приведение / преобразование разрешено, так как во время выполнения я всегда получаю InvalidCastException.Я открыл этот , чтобы пойти глубже.