Проблема дисперсии в 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)?