【发布时间】:2014-03-07 16:37:18
【问题描述】:
我有以下代码:
public class BaseClass {}
public class Class1 : BaseClass {}
public class Class2 : BaseClass {}
public class BaseClassList : List<BaseClass> {}
public class Class1List : List<Class1> {}
public class Class2List : List<Class2> {}
public void Setup()
{
BaseClassList b = new BaseClassList();
b.Add(new BaseClass());
b.Add(new BaseClass());
b.Add(new BaseClass());
var list = from a in b
select a;
Class1List c1 = new Class1List();
foreach (BaseClass a in b)
{
var o = a as Class1;
if (o != null)
c1.Add(o);
}
}
但是,当将 a 转换为 Class1 时,o 始终为空。有什么问题?
【问题讨论】:
-
您只是将
BaseClass添加到b,而没有添加Class1。每只狗都是动物,但并非所有动物都是狗。 -
由于不会将一个类转换为另一个类,它只会在它是该类型的实例时分配它
标签: c# list inheritance casting