考虑以下:
public void Step(Action code){}
Run Code Online (Sandbox Code Playgroud)
为了重用它,我通常传递一个lambda表达式,如下所示:
tr.Step(() => StaticType.SomeMethod(someParameter);
Run Code Online (Sandbox Code Playgroud)
而在其他时候我可以简单地传递一个void函数而不使用lambda表达式:
tr.Step(SomeNonStaticType.SomeMethod);
Run Code Online (Sandbox Code Playgroud)
SomeMethod在哪里:
public override void SomeMethod(){}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下吗?
编辑:要清楚两者都有void返回类型.编辑2:如果我问这些问题我应该阅读哪本书(请在评论中).
Action 是具有0个参数且没有返回值的方法的委托.
您可以将符合这些条件的任何方法传递给您tr.Step.
您不能使用具有参数或具有返回类型的方法Action,因为签名不匹配.为此你需要做一些像你在那里做的事情() => StaticType.SomeMethod(someParameter).
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |