帮忙写出程序的输出结果:(为什么?)谢啦!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);
     }
}

解决方案 »

  1.   




    6
    单步调试,看运行步骤:
    1、public static void Main()
    2、a.Fun2(b);
    3、public override void Fun1(int i){}
    4、public virtual void Fun1(int i)    输出 2
    还有其它就自已去单步看下就明白了
      

  2.   

       a.Fun2(b); 
    //调用b.fun1(1);//这里是多态的调用
    再调用a.fun1(5);
    所以输出:
    2
    5b.Fun2(a);
    //调用a.Fun1(1);
    再调用a.Fun1(5);
    所以输出:
    1
    5
      

  3.   

    2 a.Fun2(b)--B.Fun1
    5 a.Fun2(b)--A.Fun1
    1 b.Fun2(a)--A.Fun1
    6 b.Fun2(a)--B.Fun1
      

  4.   

    不错,知道了,
    b.Fun2(a);
    执行A类中的Fun2
    a.Fun1;
    然后,执行B类中的 Fun1
    base.Fun1(i+1)
      

  5.   

    不错,知道了,
    b.Fun2(a);
    执行A类中的Fun2
    a.Fun1;
    然后,执行B类中的 Fun1
    base.Fun1(i+1)