【发布时间】:2013-11-05 06:20:32
【问题描述】:
.NET 框架为什么要指定标准委托?声明一个新的委托类型很简单,只需一行代码即可完成。
public delegate void Something<T>(T obj);
他们为什么要定义所有这些其他类型(Action、Action 等)?
这样做的目的和收获是什么?
http://msdn.microsoft.com/en-us/library/system.action.aspx
我想知道的另一件事是,他们接着定义了 17 个版本,除了采用不同数量的类型参数外,它们都是相同的。但为什么要停在 17 点?是什么告知了这种类型的决定?
【问题讨论】:
-
因此您不必编写额外的代码行。
-
但这太荒谬了。
-
我们在项目中使用 Action/Func 代表。我们没有理由定义在我们的应用程序中使用的特定委托,因此标准的 Action/Func 委托可以满足我们的目的。至于是什么通知了该决定,没有什么比“这是最大参数数”之类的了。我认为他们只是想适应。老实说,如果您的方法有这么多单独的参数,您的代码中可能还有其他问题。
-
所有使用 lambda 的东西都应该声明自己的委托类型吗?
-
@PaulDraper 的第一条评论完美地回答了您的问题:标准定义让您不必自己编写。您的“但这很荒谬”的回复为您赢得了反对票和基于意见的投票结束。任何优秀的程序员都知道,尽量减少编写的代码行数是一件好事。因此,虽然 Sriram 的回答很好并且值得一票,但它是对 Paul 评论的补充。