不同版本的空代表

时间:2017-10-11 14:10:21

标签: c# delegates is-empty

之间是否有任何技术差异
Action foo = null;

Action foo = delegate { };

Action foo = () => {};

从语义上讲,它们都代表一个空委托,但我想知道是否还有更多内容。

我之所以要问的是我需要初始化一个委托,以便以后可以在其调用列表中添加方法。如果未初始化,则无效:

Action foo;
...
foo += () => { Console.WriteLine("Hello world!"); };
// compiler error CS0165: use of unassigned local variable

但我想初始化我的Action,以便尽可能减少内存和执行时间。那么,如果确实存在差异,哪一个会节省更多空间/时间?

奖金问题:是否还有其他基本方法来定义语义上空的委托,如果是的话,还有其他事情会在幕后发生吗?

0 个答案:

没有答案