请考虑以下事项:
public void Step(Action code){}
为了重用这个,我通常会像这样传递一个lambda表达式:
tr.Step(() => StaticType.SomeMethod(someParameter);
虽然在其他时候我可以简单地传递一个void函数而不使用lambda表达式:
tr.Step(SomeNonStaticType.SomeMethod);
SomeMethod在哪里:
public override void SomeMethod(){}
有人可以向我解释一下吗?
编辑:要清楚两者都有无效的返回类型。编辑2:如果我问这些问题我应该阅读哪本书(请在评论中)。
答案 0 :(得分:5)
Action
是具有0个参数且没有返回值的方法的委托。
您可以将符合这些条件的任何方法传递给tr.Step
。
您不能使用具有参数或返回类型为Action
的方法,因为签名不匹配。为此,您需要执行类似() => StaticType.SomeMethod(someParameter)
所做的事情。