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

委托链上的方法如何执行

发布时间: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;
}
......

阅读全文

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

热点内容
根号15在数轴上的表示方法图片 浏览:911
语音提示器安装方法 浏览:203
c32漏电保护空开连接方法 浏览:366
附件炎有哪些治疗方法 浏览:335
36x198的简便计算方法 浏览:258
高阻计使用方法 浏览:950
水质超标的解决方法 浏览:575
英语大师教学方法 浏览:155
男性眼袋怎么消除简单方法 浏览:907
钛金条有几种安装方法好看 浏览:829
披萨饼的制作方法和视频 浏览:387
青田玉鉴别方法 浏览:913
魅族3夜间模式在哪里设置方法 浏览:374
如何清理水垢的好方法 浏览:691
涂油漆的检测方法 浏览:910
汽车前盖间隙检测方法 浏览:787
中考邢台填报志愿的方法与步骤 浏览:503
翻腕上篮训练方法 浏览:200
自己怎么测肺活量怎么测试方法 浏览:792
勃起功能障碍治疗方法 浏览:678