class a {
public:
virtual void test1(void) {
printf("a1\n");
}
};class b: public a {
public:
void test1(void) {
a::test1();
printf("b1\n");
}
};
上面是一段C++的类代码,在类b::test1中先调用了a::test1方法,然后继续执行b::test1下面的代码,在c#能这么做吗?

解决方案 »

  1.   

    base.test1();
      

  2.   

    调当前类用this.FunctionName()
    调基类用base.FunctionName()
      

  3.   

    class a {
    public virtual void test1(void) 
    {
            Console.WriteLine("a1\n");
     }
    }class b:a 
    {
    public void test1(void) //此处会有编译警告,因为它隐藏了基类方法test1,可以选择:1):用new来显式隐藏;2):override重写
        {
            base.test1();
            Console.WriteLine("b1\n");
        }
    }
      

  4.   

    直接用base.来调用
    至于子类有和你类一样的方法时如果不加new关键字也会是认为是隐藏的,但是会有警告