扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
引言:
成都创新互联公司主营固阳网站建设的网络公司,主营网站建设方案,app开发定制,固阳h5小程序开发搭建,固阳网站营销推广欢迎固阳等地区企业咨询在我看来委托一直是一种比较特别的类型,刚开始学的时候总是朦朦胧胧的不知所云。有必要从头来过,记个笔记。该篇从委托的定义,委托的优点,如何理解委托以及委托的协变和逆变 依次展开。
目录:
一、委托的定义:... 1
二、委托的优点:... 1
三、如何理解委托:... 1
四、委托中的协变与逆变:... 3
五、总结。... 5
六、参考:... 5
一、委托的定义:
委托是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联。(这里的签名包含返回值)
二、委托的优点:
1) 委托类似于 C++ 函数指针,但它们是类型安全的。
2) 委托允许将方法作为参数进行传递。
3) 委托可用于定义回调方法。
4) 委托可以链接在一起;例如,可以对一个事件调用多个方法。
5) 方法不必与委托签名完全匹配。(C#4.0)
6) C# 2.0 引入的 匿名方法 和C# 3.0引入的 Lambda 表达式都可编译为委托类型,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
三、如何理解委托:
有如委托的字面理解:将自己的事务嘱托他人代为处理 ,delegate个人理解是 代理方法执行方法的内容。
组合多路广播委托:+ 运算符将它们分配给一个要成为多路广播委托的委托实例。- 运算符可用来从组合的委托移除组件委托。只有相同类型的委托才可以组合。
委托综合示例:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5:
6: namespace CSharp.Delegate
7: {
8: //声明委托
9: public delegate void Del(string message);
10:
11: class Program
12: {
13: // Create a method for a delegate.
14: public static void DelegateMethod(string message)
15: {
16: System.Console.WriteLine(message);
17: }
18:
19: //定义回调方法
20: public static void MethodWithCallback(string message, Del callback)
21: {
22: callback(message);
23: }
24:
25: public static void Hello(string s)
26: {
27: System.Console.WriteLine(" Hello, {0}!", s);
28: }
29:
30: public static void Goodbye(string s)
31: {
32: System.Console.WriteLine(" Goodbye, {0}!", s);
33: }
34:
35: static void Main(string[] args)
36: {
37:
38: //new方法实例化委托,将方法作为参数进行传递
39: Del handler = new Del(DelegateMethod);
40: handler("向大家问个好吧。");
41: MethodWithCallback("大家好!", handler);
42:
43: //匿名方法来实例化委托
44: Del anotherhandler = DelegateMethod;
45: anotherhandler("Hello World");
46: MethodWithCallback("I am coming!", anotherhandler);
47:
48: //“Lambda 表达式”是一个匿名函数,可以其表达式分配给委托类型
49: Del lamDel = (string s) =>
50: {
51: Console.WriteLine(s);
52: };
53: lamDel("我是Lambda匿名委托!");
54:
55: //
56: //多路组合委托
57: //
58: //Hello,Goodbye,DelegateMethod 组合委托到d
59: Del d;
60: d = Hello;
61: d += Goodbye;
62: d += new Del(DelegateMethod);
63:
64: d("David");
65:
66: //移除委托DelegateMethod
67: d -= DelegateMethod;
68: d("David");
69:
70: }
71: }
72: }
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流