导航:首页 > 方法技巧 > 委托链上的方法如何执行

委托链上的方法如何执行

发布时间:2024-03-13 23:26:03

㈠ 请问C#中的委托是什么如何使用

委托的用法很多:一般是用于声明事件和回调的委托,还可以是用于代表方法标签的委托.
书本上的委托只是对委托的定义与具体怎样调用问题,没有涉及到委托的真正实用的地方。其实委托是与事件和回调
一起来使用的,你可以看一下C#异步调用,与多线程处理里等就可以看到委托的作用了。
下面是别人的理解我觉得还是比较好的:
1)有了委托你就可以把方法看作像常数一样,而委托就是该常数类型的变量.
从这个角度看来用于声明事件的委托就是声明这个事件触发以后所调用的方法的标签或者特征.只有符合该标签(参数个数和参数类型)的方法才可以做为该用于该事件的回调.
一个事件触发了,你可能需要用多个方法处理该事件或者说该事件调用了多个方法(每个事件的实例都有一个需要调用的方法列表,当事件触发它会逐个调用列表中的每个方法)
2)通过使用委托你可以实现对方法变化的封装.
打个比方:如果你骑自行车,你需要有骑自行车的方法DriveBike().如果你骑摩托车你需要有骑摩托车的方法.现在你有一个方法DriveMoto.现在你需要定义一个方法,实现你骑(自行车或者摩托车)到某地DriveTo(地点,骑的方式)
骑的方式这里其实就是委托.在使用的时候,如果你是骑自行车你就用DriveBike实例化委托的实例带入DriveTo方法,如果你骑摩托车你就用DriveMoto实例化"骑的方式"这个委托带入DriveTo方法.

㈡ c#委托链的问题

你的委托d1上的确已经挂上了两个方法,当d1被调用的时候,那两个方法也的确都被触发调用到了。
不过多个方法有多个返回值,而只有一个变量来接受,所以后面被调用的方法的返回值,就把前面方法的返回值覆盖掉了。换句话说,前面的返回值都被丢弃掉了。

这也是定义事件委托的时采用void作为返回值的原因。

【回答补充】

你可以去看看系统类库提供的委托/事件,都是void返回类型的。

如果你非要做一个带返回值的委托,那可以这样做了:
......
public string CreateDelegate()
{
Class1 c1 = new Class1();
MyDelegate d1 = new MyDelegate(c1.delegateMethod1);
d1 += c1.delegateMethod2;
string d = "";
foreach (MyDelegate x in d1.GetInvocationList())
{
d += x("Hello World");
}
return d;
}
......

阅读全文

与委托链上的方法如何执行相关的资料

热点内容
用什么方法能缓解口舌干燥 浏览:77
apollo计算方法 浏览:796
有肚子t恤下摆打结方法步骤 浏览:626
4岁幼儿口齿不清晰的治疗方法 浏览:825
子宫肌瘤的治疗方法小 浏览:77
手机充电器线的正确方法 浏览:493
如何快速生成get和set方法 浏览:683
小孩得了结核怎么治疗方法 浏览:634
比率电化学分析方法什么意思 浏览:410
活塞波浪环的正确安装方法 浏览:551
脚上长疣的治疗方法 浏览:115
要用什么方法写字才快 浏览:557
原神中找封神童简单的方法 浏览:666
识字教学第六课画教学方法 浏览:771
浙江防雷检测技术和方法 浏览:331
wpsexcelif函数的使用方法 浏览:55
怎么剥柚子最简单方法妙招姐 浏览:673
天圆地方的圆角什么方法下料简便 浏览:791
三星4521f使用方法 浏览:497
后背风湿痛的治疗方法 浏览:473