4

我是 C# 的新手,我需要弄清楚如何在不实现继承的情况下覆盖新类方法中的类方法,在 Java 中我可以这样做:

Class classA{
  void method1(){
       statements ....
       ....
       classB obj = new classBb(){
            @override
            void someMethod(){ //from ClassB
              statements ....
              ....
            }
       };  
   }
}

我想在C#中实现相同的目标。

4

1 回答 1

4

你不能在 C# 中做到这一点。但是,如果实现的某些部分是特定于调用站点的,则可以使用委托void method2()签名映射到(无Action参数/返回值),所以:

class classB {
    private readonly Action method2;
    public classB(Action method2) {
        if(method2==null) throw new ArgumentNullException("method2");
        this.method2 = method2;
    }
    public void SomeMethod() {
         ... that uses what was method2()
        method2();
    }
}

然后:

classB obj = new classB(() => {
   // statements...
});

使用替代相同的语法:

classB obj = new classB(delegate {
   // statements...
});

或者:

classB obj = new classB(delegate() {
   // statements...
});
于 2013-04-18T06:46:34.787 回答