两个定义委托

问题描述:

可能重复的方式:
very simple delegate musing两个定义委托

我一直在想,什么是定义一个委托的这个方法

System.Action act; 
act = MethodWithoutParameters; 

之间的差异这一个

System.Action act; 
act = new System.Action(MethodWithoutParameters); 

。我应该更喜欢一个吗?如果是这样,为什么? 我不幸无法找到关于我的问题的很多信息。 如果有人能告诉我这两段代码之间的差异,我会非常感激。

它的语法糖:“隐式方法组转换”。编译器将第一个版本转换为第二个版本。

这两段代码产生完全相同的IL。没有理由比另一个更喜欢一个。这只是一个风格问题。

这exatcly相同,没有区别

我还要补充的第三个,拉姆达:

System.Action act = x=>DoSomething(x); 
+3

那一个是略有不同。它引入了lambda表达式,使委托指向一个方法,该方法又调用DoSomething方法。有几个(不可否认的)情况下,这在功能上是不同的。 – 2012-01-04 22:13:31

+0

@ChrisShain:如果这可能是不同的,那么在普通函数中声明相同的'lambda'声明为'delegate' *应该会导致相同的模糊结果。不是吗? – Tigran 2012-01-04 22:16:06

+0

我不确定我明白你在问什么 – 2012-01-04 22:34:46