Проблема дисперсии в 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<Animal> animalsList = new List<Giraffe>();

    // ...and explicit casting fails
    List<Animal> animalsList2 = (List<Animal>) new List<Giraffe>();
}

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

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

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