我有以下代碼: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