C#中代码行this.MyEvent += new MyDel(WelcomeUser);的具体含义是什么
C#代码行
this.MyEvent += new MyDel(WelcomeUser);含义说明 先明确代码里的两个前置定义:
- 首先
MyDel是自定义的委托类型,它规定了绑定的方法必须满足:入参为1个string类型、返回值为string类型 - 其次
MyEvent是用MyDel作为类型声明的事件,事件本质是委托的安全封装,仅允许通过+=添加订阅、-=移除订阅的操作。
这行代码的作用可以拆解为两部分:
new MyDel(this.WelcomeUser):实例化一个MyDel类型的委托对象,将当前类的WelcomeUser方法作为该委托的绑定目标,后续调用这个委托实例时,就会自动执行WelcomeUser的逻辑this.MyEvent +=:将上面创建好的委托实例,添加到MyEvent事件的订阅者队列中。之后只要触发MyEvent事件,就会按顺序调用队列中所有委托绑定的方法。
补充:更高版本的C#支持语法糖简化,这行代码可以直接写成
this.MyEvent += WelcomeUser;,编译器会自动完成委托实例化的操作,运行效果完全一致。
你贴的完整代码的执行逻辑也可以验证这个作用:
- Main方法中实例化
EventProgram对象时,会先执行构造函数完成WelcomeUser方法对MyEvent的订阅 - 后续调用
obj1.MyEvent("Tutorials Point")触发事件,就会执行WelcomeUser方法,返回Welcome Tutorials Point打印输出。
内容的提问来源于stack exchange,提问作者Mr.Wadile
相关产品推荐
相关产品推荐

