Учитывая интерфейс IQuestion
и реализацию этого интерфейса AMQuestion
, предположим следующий пример:
List<AMQuestion> typed = new List<AMQuestion>();
IList<IQuestion> nonTyped = typed;
В этом примере получается, как и ожидалось, ошибка компиляции, указывающая на то, что два не одного типа. Но в нем указано, что существует явное преобразование. Поэтому я изменяю его так:
List<AMQuestion> typed = new List<AMQuestion>();
IList<IQuestion> nonTyped = typed as IList<IQuestion>;
Которая затем компилируется, но во время выполнения nonTyped
всегда имеет значение null. Если кто-то может объяснить две вещи:
- Почему это не работает.
- Как я могу добиться желаемого эффекта.
Было бы очень благодарно. Спасибо!