代表 - 他们为什么创建

时间:2013-02-21 12:37:37

标签: .net delegates

我想我的代表是我的代表;现在我知道通常存在大多数“事物”来解决特定问题,但是委托解决了什么问题。

当我们想要调用一个我们无法从另一个项目引用的存在项目的方法时,IMO解决了这个问题(否则我们可能处于两个项目彼此引用的情况,这是不允许的)。这对我来说很有意义,我可以看到它的使用。

还有其他时间/原因/好处吗?

2 个答案:

答案 0 :(得分:1)

它们存在,因此您可以将函数放入变量并对它们执行操作。例如,Enumerable.Select接受一个委托,告诉它如何处理每个元素。如果没有代表,您将如何实施Select?例如,您必须实现一个接口,但这很笨拙。 (Java就是这样做的,并不是那么好。)

实际上,委托非常像单方法接口。

它们也存在于本机代码互操作中,因此您可以提供指向本机方法的本机函数指针。

答案 1 :(得分:1)

我在winform中使用它们,例如通过按钮关闭表单。

button.Click += delegate{this.Close();};