我一直想知道这种定义委托的方法之间有什么区别
System.Action act;
act = MethodWithoutParameters;
和这一个
System.Action act;
act = new System.Action(MethodWithoutParameters);
。我应该更喜欢一个吗?如果是这样,为什么? 遗憾的是,我无法找到有关我的问题的更多信息。 如果有人能告诉我这两段代码之间的差异,我真的很感激。
答案 0 :(得分:6)
它是语法糖:“隐式方法组转换”。编译器将第一个版本转换为第二个版本。
答案 1 :(得分:4)
这两段代码产生完全相同的IL。没有理由偏爱一个而不是另一个。这只是一种风格问题。
答案 2 :(得分:1)
完全相同,没有区别
我还要添加第三个,lambda!:
System.Action act = x=>DoSomething(x);