如何使用c#在另一个方法内部重写一个方法

本文关键字:方法 一个 重写 内部 何使用 另一个 | 更新日期: 2023-09-27 18:09:41

我是c#的新手,我需要弄清楚如何在一个新的类方法中重写一个类方法而不实现继承,在Java中我可以这样做:

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

我想在c# 中实现相同的功能。

如何使用c#在另一个方法内部重写一个方法

在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...
});