我想我已经得到了代表们的关注;现在我知道通常存在大多数“事情”来解决特定问题,但是代表解决了什么问题。
IMO 当我们想要调用无法从另一个项目引用的现有项目的方法时,它解决了这个问题(否则我们可能会遇到两个项目相互引用的情况,这是不允许的)。这对我来说很有意义,我可以看到它的用途。
还有其他时间/原因/好处吗?
它们的存在是为了让您可以将函数放入变量中并对它们进行操作。例如Enumerable.Select
,接受一个委托,告诉它如何处理每个元素。Select
如果没有代表,您将如何实施?例如,您必须实现一个接口,但这很笨拙。(Java 就是这样做的,它不是那么好)。
实际上,委托很像单方法接口。
它们还用于本机代码互操作,以便您可以提供指向本机方法的本机函数指针。
例如,我在 winform 中使用它们通过按钮关闭表单。
button.Click += delegate{this.Close();};