首页 > 技术文章 > 委托和事件

LY-HeroesRebor 2020-03-04 17:08 原文

1、委托

委托是一个类,它定义了方法的类型,使得可以将方法当做另外一个方法的参数
来进行传递,这种将方法动态地赋值给参数的做法,可以避免在程序中大量使用if-else(switch)语句,同时使得程序具有更好的可扩展性。

//定义一个委托,它定义了可以代表的方法的类型
public delegate void MyDelegate(string str);

//方法
void Method_1(string str)
{
...
}

void Method_2(string str)
{
...
}

//声明委托类型的变量并赋值
MyDelegate delegate1;
delegate1=Method_1;

//绑定
delegate1+=Method_2;

注意:第一次用的“=”,是赋值的语法;第二次,用的是“+=”,是绑定的语法。如果第一次就使用“+=”,将出现“使用了未赋值的局部变量”的编译错误。

总结:使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。


2、事件

声明一个事件实际上是声明一个私有的委托变量。
不管是不是声明为public,它总是被声明为private,不能给事件赋值,
事件只能出现在+=或-=的左边。

//定义一个Mydelegate类型的事件
public event MyDelegate myEvent_1;

 

3、.Net Framework编码规范 


1. 委托类型的名称都应该以EventHandler结束。
2. 委托的原型定义:有一个void返回值,并接受两个输入参数:一个Object 类型,一个 EventArgs类型(或继承自EventArgs)。
3. 事件的命名为 委托去掉 EventHandler之后剩余的部分。
4. 继承自EventArgs的类型应该以EventArgs结尾。

 

参考链接:https://blog.csdn.net/chopper7278/article/details/3145000

推荐阅读