Проблема дисперсии в C #: присвоение списка <Derived> как списка <Base>

Посмотрите на следующий пример (частично взят изБлог MSDN):

class Animal { }
class Giraffe : Animal { }

static void Main(string[] args)
{
    // Array assignment works, but...
    Animal[] animals = new Giraffe[10]; 

    // implicit...
    List animalsList = new List();

    // ...and explicit casting fails
    List animalsList2 = (List) new List();
}

Это проблема ковариации? Будет ли это поддерживаться в будущем выпуске C #, и есть ли какие-нибудь хитрые обходные пути (используя только .NET 2.0)?

Ответы на вопрос(4)

Ваш ответ на вопрос