C#,如何将ParentClass列表转换为ChildClass列表?

时间:2017-07-12 06:08:05

标签: c#

我有一个名为PokerPiece的课程,它是来自Piece类的继承。

那么,如果我可以让List<Piece> pieces =new List<PokerPiece>()工作?如果没有,我该怎么做呢?

3 个答案:

答案 0 :(得分:2)

您所说的问题与Covariant / Contravariant有关。

 IEnumerable<Piece> piece = new List<PokerPiece>();

以下链接可以帮助您

https://docs.microsoft.com/en-us/dotnet/standard/generics/covariance-and-contravariance

答案 1 :(得分:0)

我认为你以某种方式得到了错误的方式 - 通常你可能想要这样的东西:

var myList =new List<Message> ();

var myChildObject = new ChildMessage();

myList.add(myChildObject)

myList[0] as ChildMessage == null // should not return null

答案 2 :(得分:0)

您可以执行类似

的操作
List<Piece> pieces = new List<Piece>(new List<PokerPiece>());

但你应该做的只是

List<Piece> pieces = new List<Piece>();

或者

List<PokerPiece> pieces = new List<PokerPiece>();