我有以下代码:C#铸造
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);
}
}
然而,铸造为Class1的时候,邻始终为空。问题是什么?
您只向'b'添加'BaseClass'并且没有'Class1'。每只狗都是动物,但不是所有的动物都是狗。 –
http://stackoverflow.com/questions/10172767/cast-base-instance-to-derived-class-downcast-in-c-sharp –
由于不会将一个类转换为另一个类,因此只会在它指定它的情况下是该类型的一个实例 – Liath