除了传统,我还有什么理由想要使用
void foo(int k) {
// stuff
}
在
Action<int> foo = new Action
((k) => {
// stuff
});
更一般地说,正常定义我的函数是否有任何实际优势,而不是将它们定义为委托?
答案 0 :(得分:2)
当然,有很多充分的理由。想到的前三个:
几乎所有的C#程序员都会对你非常罕见的代表过度使用感到非常惊讶。
函数可以是<ul id="sortable">
<li class="ui-state-default">
<img src="http://localhost/site/gallery/3.png" style="max-width: 100%; height: auto;">
<input type="hidden" class="imageHiddenImageId" id="imageHiddenImageId" name="imageHiddenImageId" value="45">
<input type="hidden" id="imageHiddenNo" name="imageHiddenNo" value="2">
</li>
</ul>
,可以用来实现接口。
可以重新分配变量,甚至是委托类型的变量,这会导致非常意外的行为。
但还有更多。
Eric Lippert在评论中提到函数可以重载,变量不能。
方法可以实现为迭代器(使用virtual
关键字),匿名函数不能。
可以隐式调用某些特殊方法:yield
查找名为new T { a, b, c }
的方法,而不是名为Add
的变量。
预定义的委托类型不允许您使用Add
或ref
参数。
预定义的委托类型不允许您向返回类型或参数添加属性。