关于C#多播委托的若干问题

原创 2007年09月20日 21:24:00

1. 多播委托调用的顺序问题。

查阅MSDN英文和中文分别说"in order"和"按顺序调用",但是都没有明确说明是按照什么顺序
(这样很容易让人理解是按照加入委托方法链的顺序)

在《C#高级编程》一书中,在6.2.3多播委托一节最后一段写道:
"如果使用多播委托,就应注意对同一个委托调用方法链的顺序并未正式定义,因此应避免编写依赖于以任意特定顺序调用方法的代码。"
这里是明确说明了多播委托的调用顺序是不确定的。

在网上请教一些人,有人回答说"按顺序调用"仅仅表示都会被调用到,但至于什么先后顺序是不可知的。

而我自己写代码测试,测试的结果目前都是调用顺序和加入委托的顺序相同的。但是不排除有不同的时候。

 2. 多播委托的返回值

多播委托是可以有返回值的,不用必须为void

在MSDN上有讲"如果委托具有返回值和/或输出参数,它将返回最后调用的方法的返回值和参数。"
而我自己代码测试也是正确的。

而且关于多播委托的异常处理,MSDN写:
"如果任一方法引发了异常,而在该方法内未捕获该异常,则该异常将传递给委托的调用方,并且不再对调用列表中后面的方法进行调用。"

 

C#--多播委托

一个委托可以包含多个方法,这种委托称为多播委托,如果调用多播委托,就可以按顺序连续调用多个方法(委托签名一般为void;否则返回最后一个方法的结果) 一、多播委托看下面代码: class Progr...
  • u012988972
  • u012988972
  • 2015年08月11日 18:28
  • 955

C#自学(一)委托(delegate)、委托泛型、多播委托

为了开发windows phone应用程序,多年
  • hxfdarling
  • hxfdarling
  • 2014年07月30日 11:37
  • 1739

C#中多播委托实现多窗体通信

C#多播委托实现多窗体通信
  • J_Kang
  • J_Kang
  • 2016年05月07日 10:21
  • 1069

C#中的多播委托笔记总结

定义: 委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针。 理解委托的一种方式可以把委托的作用当作是给方法签名指定名称。 委托的定义类似于方法的定义,但没有方法体,定义的委托...
  • u012464951
  • u012464951
  • 2014年10月13日 16:30
  • 909

委托 创建 调用 多播委托 事件 委托与事件的区别

委托是一个类型 事件是委托的一个实例 加了event关键字 Student类 public class Student { public event MyDele...
  • lzlawy1314
  • lzlawy1314
  • 2016年12月31日 10:44
  • 232

c# 委托和多播委托

namespace WindowsFormsApplication1 { public partial class Form1 : Form { /* ...
  • yal179
  • yal179
  • 2014年05月04日 15:02
  • 550

C#多播委托

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...
  • Godsight
  • Godsight
  • 2017年02月24日 10:57
  • 176

C# 多播委托

Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text;...
  • ren_ming_ge
  • ren_ming_ge
  • 2016年11月04日 15:28
  • 112

整理几种委托的用法Action,Func,匿名,多播,Lambde表达式,event

整理几种委托的用法Action,Func,匿名,多播,Lambde表达式,event
  • GaoHeShun
  • GaoHeShun
  • 2017年05月08日 20:37
  • 484

关于多播委托因异常而终止的解决方法

在使用多播委托时,假设方法列表中有多个方法,但委托执行到某个方法时抛出异常,那么整个委托的迭代将在抛出异常的地方退出终止。后面的方法也不会再执行。 例如: 假设定义一个包含方法的类: ...
  • fnegyu
  • fnegyu
  • 2014年11月11日 22:10
  • 320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于C#多播委托的若干问题
举报原因:
原因补充:

(最多只允许输入30个字)