我是c#中的新手。我能够理解代表的概念,如语法,如何使用代表。但我仍然困惑于“为什么我们使用代表”。因为它最终用来调用一个方法。我们为什么选择代表?代表的核心使用
代表的核心使用
回答
我们使用代表能够在稍后执行代码时调用方法。我们可以将一个方法传递给另一个可以决定是否以及何时调用它的代码块。
这样我们可以委托调用方法的责任。
代表用于很多事情。对于事件处理程序最常见的用途。生成该事件的代码不需要知道将处理事件的代码,该代码可以由第三方提供。换句话说,微软可以提供事件触发代码,让你提供处理这些事件的方法。
代表可以在任何情况下使用,如提供某种通用处理程序和其他代码执行某些特定的处理。
查看委托的另一种方式是它们是C#处理Command Pattern的方式。为了调用方法,不必声明通常与该方法相关的接口和类,C#可让您直接传递对方法的引用,从而大大简化了在C#中实现该模式的方式。
使用委托允许程序员封装对委托对象内的方法的引用。然后可以将委托对象传递给可以调用引用方法的代码,而无需在编译时知道哪个方法将被调用。
它主要用于事件处理程序,但这不是它的唯一用法;查看代表的详细信息 - http://msdn.microsoft.com/en-us/library/aa288459%28v=vs.71%29.aspx
您可能会认为委托是在某些执行链中将代码“注入”预定义合同的一种方式。
代表可以发送到另一个函数,实质上是“可定制”功能的一部分。
//both of these calls use the same function (Where) but with a different predicate delegate
var greaterThanZero = intList.Where(e => e > 0);
var lessThanZero = intList.Where(e => e < 0);
你能想象一个简单的例子:在应用程序中导出结果您有以下选项 1.导出为PDF 2.出口TP CSV 3.出口到TXT
所有3选项会有不同的方法实现,这些方法将与您的数据做SOMETHING。
上述三个假设将调用下面分别3种方法: 1. ExportToPdf(数据,filepath.pdf) 2. ExportToCsv(数据,filepath.csv) 3. ExportToTxt(数据,文件路径。txt)
正如你所看到的,所有3个都有相同的方法签名。在将来,您可能还有其他类型的出口,您现在还不知道。您将在此处使用具有相同方法签名的委托,以代替任何特定方法。
除此之外,还有Delegate的其他用途,如EventHandler,使用BeginInvoke的异步方法调用。
- 1. 使用核心数据与核心图
- 2. asp.net核心通用代理
- 3. dotnet核心的String.Copy替代
- 4. Swift - 用iCloud核心数据取代核心数据
- 5. 核心动画代表不叫
- 6. 核心位置代表错误
- 7. 核心数据代表保存模式
- 8. 使用xilinx的divider核心
- 9. 使用adb的Android设备上的核心/非核心电压
- 10. 核心动画 - 使用`makeBackingLayer`不适用核心图像滤镜
- 11. Git核心代码管理
- 12. Ajax.ActionLink替代mvc核心
- 13. 核心数据替代
- 14. requestHandler代码为多核心
- 15. 替代核心数据
- 16. 使用核心运动
- 17. 使用FluentScheduler - ASP.NET核心MVC
- 18. 使用核心位置
- 19. 使用CloudKit核心数据
- 20. 使用TestTools.UnitTesting .Net核心
- 21. mclapply不使用多核心
- 22. 使用核心图形
- 23. 发行使用Identity核心
- 24. 使用与核心数据
- 25. 核心数据表的NSArray
- 26. .Net核心API与EF核心代码第一和IdentityUser
- 27. 覆盖\程序\代码\核心\法师\核心\块\ Messages.php
- 28. iOS:在核心数据中使用GCD和核心数据
- 29. 使用SqlBulkCopy与ASP.Net核心导入一个.CSV核心
- 30. 核心绘图绑定到核心数据使用NSArrayController崩溃
http://stackoverflow.com/questions/687626/the-purpose-of-delegates?rq=1 –
http://stackoverflow.com/questions/9544802/what-are-delegates-for?rq=1 –
http://stackoverflow.com/questions/639320/what-are-the-advantages-of-delegates –