两个定义委托
问题描述:
我一直在想,什么是定义一个委托的这个方法
System.Action act;
act = MethodWithoutParameters;
之间的差异这一个
System.Action act;
act = new System.Action(MethodWithoutParameters);
。我应该更喜欢一个吗?如果是这样,为什么? 我不幸无法找到关于我的问题的很多信息。 如果有人能告诉我这两段代码之间的差异,我会非常感激。
答
它的语法糖:“隐式方法组转换”。编译器将第一个版本转换为第二个版本。
答
这两段代码产生完全相同的IL。没有理由比另一个更喜欢一个。这只是一个风格问题。
答
这exatcly相同,没有区别
我还要补充的第三个,拉姆达:
System.Action act = x=>DoSomething(x);
那一个是略有不同。它引入了lambda表达式,使委托指向一个方法,该方法又调用DoSomething方法。有几个(不可否认的)情况下,这在功能上是不同的。 – 2012-01-04 22:13:31
@ChrisShain:如果这可能是不同的,那么在普通函数中声明相同的'lambda'声明为'delegate' *应该会导致相同的模糊结果。不是吗? – Tigran 2012-01-04 22:16:06
我不确定我明白你在问什么 – 2012-01-04 22:34:46