我是C#的新手,我需要弄清楚如何在不实现继承的情况下覆盖新类方法中的类方法,在Java中我可以这样做:
Class classA{
void method1(){
statements ....
....
classB obj = new classBb(){
@override
void someMethod(){ //from ClassB
statements ....
....
}
};
}
}
我希望在 C#中实现相同目标。
答案 0 :(得分: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...
});