【发布时间】:2012-05-09 23:47:47
【问题描述】:
如何执行以下操作?
我的A 对象在调用GetB 后为空,即使A 继承自B。
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吗?显然不是。怎么会这样?那么,为什么您认为应该能够将 any B 转换为 A? A继承B,而不是相反。 A 是 B,这很清楚。乙?可能是 C. D. 也可能只是普通的旧 B。
-
@AnthonyPegram 在下面看到我的回答,我们想得太像了......
-
错误是more pronounced,如果你做旧风格的铸造。即
A a = (A)GetB()
标签: c# inheritance polymorphism