请高手帮忙解释一下以下的代码是怎么执行的,那个先那个后..这东西总觉得很难明白~~using System; 
public class A
        {
            public virtual void Fun1(int i)
            {
                Console.Write(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.   

    a.Fun2(b)->b.Fun1(1)->a.Fun1(5)
               此处还调用了父类的Fun1实现
    b.Fun2(a)->a.Fun1(1)->b.Fun1(5)
                          此处调用父类的Fun1实现
      

  2.   

    using System;
    public class A
    {
        public virtual void Fun1(int i)
        {
            Console.WriteLine(i);//4-(输出2)  //9-输出5
        }
        public void Fun2(A a)
        {
            a.Fun1(1);//2-调用B类Fun1 //7-调用A类Fun1(输出1)
            Fun1(5);//5-调用A类Fun1(输出5)    //8-调用B类Fun1 ***(重点在这儿B类)
        }
    }public class B : A
    {
        public override void Fun1(int i)
        {
            base.Fun1(i + 1);//3-调用A类Fun1
        }
        public static void Main()
        {
            B b = new B();
            A a = new A();
            a.Fun2(b);//1-调用A类Fun2
            b.Fun2(a);//6-调用A类Fun2
        }
    }
      

  3.   

    楼上的第9步应该在B类中调用A类Fun1的地方,现在的第9步应为第10步,输出也应为6了。