我定义一个基类,并定义一个函数DoSomeThing
然后继承此基类,也定义一个同名函数DoSomeThing。
执行的时候,只执行了派生类的DoSomeThing。
有没有办法,先执行基类的DoSomeThing然后再执行派生类自己的DoSomeThing。
就像C++里的构造函数一样,先执行基类的构造函数,再执行派生类自己的构造函数。

解决方案 »

  1.   

    那就用Base来显式调用基类函数,因为你没有写Virtual,那么派生类就覆盖了基类方法,这个会出编译警告的,
    你也可以用New显式覆盖基类方法,这个时候,这两个方法没有任何关系,不属于重载,也不是改写
      

  2.   

    基类定义DoSomeThing方法为Virtual,子类override DoSomeThing方法.重写时先执行base.DoSomeThing();
      

  3.   


    class A
    {
      public vitual void DoSomeThing()
      {
         Console.WriteLine("A:DoSomething");
      }
    }class B : A
    {
      public vitual void DoSomeThing()
      {
         base.DoSomething();                             //<----------
         Console.WriteLine("B:DoSomething");
      }
    }
      

  4.   

    正如上面所说,就是用base关键字说明就行了吧.
      

  5.   

    即使是覆盖了基类的doSomething方法,使用base.doSomething也可以先执行基类的哦!!???