有没有办法用lambda函数覆盖一个类方法?
例如,具有类的定义
class MyClass {
public virtual void MyMethod(int x) {
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何要做:
MyClass myObj = new MyClass();
myObj.MyMethod = (x) => { Console.WriteLine(x); };
Run Code Online (Sandbox Code Playgroud)
克里斯是对的,方法不能像变量一样使用.但是,你可以这样做:
class MyClass {
public Action<int> MyAction = x => { throw new NotImplementedException() };
}
Run Code Online (Sandbox Code Playgroud)
允许覆盖操作:
MyClass myObj = new MyClass();
myObj.MyAction = (x) => { Console.WriteLine(x); };
Run Code Online (Sandbox Code Playgroud)
不会.但是,如果您首先将该方法声明为lambda,则可以设置它,但我会尝试在初始化时执行此操作.
class MyClass {
public MyClass(Action<int> myMethod)
{
this.MyMethod = myMethod ?? x => { };
}
public readonly Action<int> MyMethod;
}
Run Code Online (Sandbox Code Playgroud)
但是,除非接口指定了lambda属性,否则无法实现声明了MyMethod的接口.
F#有对象表达式,允许你用lambdas组成一个对象.我希望在某些时候这是c#的一部分.
| 归档时间: |
|
| 查看次数: |
2022 次 |
| 最近记录: |