我該怎麼做類似以下的事情?
我的A
對象在調用GetB
後爲空,即使A
繼承自B
。函數多態性。 A:B時返回B爲A爲空
class Program
{
public class A : B
{
}
public class B
{
}
static void Main(string[] args)
{
A a = GetB() as A;
Console.WriteLine(a == null); // it is null!
Console.WriteLine("Console.ReadKey();");
Console.ReadKey();
}
public static B GetB()
{
return new B();
}
}
C類:B {}。 C和A?很明顯不是。怎麼會這樣?那麼,爲什麼你認爲你應該能夠將任何* B投給A? A繼承B,而不是相反。 A是B,很清楚。 B'它可能是CD或者它可能只是普通的老B。 –
@AnonyPegram在下面看到我的回答,我們覺得太像了...... – goric
錯誤是[更明顯](http://c2.com/cgi/wiki?FailFast)如果你做老式的鑄造。即'A a =(A)GetB()' –