达人高手解此override,new 死节
mazei 2006-08-16 04:59:03 代码1:求输出
using System;
using System.Collections.Generic;
using System.Text;
namespace JobTest1
{
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
}
代码2:将override改成了new
using System;
using System.Collections.Generic;
using System.Text;
namespace JobTest1
{
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public new void Fun1(int i)
{
base.Fun1(i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
}
当然,结果是可以运行出来的,俺笨,就是走不明白为什么会是这个结果,达人解之。先谢了