c#有如下代码:
class A
{
public void F()
{
Console.WriteLine("A.F");
}
public virtual void G()
{
Console.WriteLine("A.G");
}
}
class B:A
{
new public void F()
{
Console.WriteLine("B.F");
}
public override void G()
{
Console.WriteLine("B.G");
} }
class Test
{
static void Main()
{
B b=new B();
A a=b;
a.F();
b.F();
a.G();
b.G();
}
}
想问一下,
A a=b;
这行代码是否等价于:
A a= new A();
a=b;
为什么会这样,能详细的解释一下吗?
class A
{
public void F()
{
Console.WriteLine("A.F");
}
public virtual void G()
{
Console.WriteLine("A.G");
}
}
class B:A
{
new public void F()
{
Console.WriteLine("B.F");
}
public override void G()
{
Console.WriteLine("B.G");
} }
class Test
{
static void Main()
{
B b=new B();
A a=b;
a.F();
b.F();
a.G();
b.G();
}
}
想问一下,
A a=b;
这行代码是否等价于:
A a= new A();
a=b;
为什么会这样,能详细的解释一下吗?
A 是B的父类啊,所以 A a=b 是可以的,但是 B b = a 就不行的。
http://blog.csdn.net/zhoufoxcn/archive/2008/09/02/2864429.aspx