請看下面的例子(從MSDN Blog部分截取):C#方差問題:分配列表<Derived>方式List <Base>
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)?
+1只是爲了增加Jon的回答(不是他需要任何幫助),遵循'Func'到'Func
感謝您也指出類型安全問題。這真的很有幫助。 – AndiDog 2010-01-09 16:25:05
'animals.Add(new Lion()); //唉!'?如果您可以投出一個「獅子」並將其用作「動物」,並且如果您將「動物」中的所有元素用作「動物」,那麼問題是什麼? – Jeff 2017-04-12 20:04:17