C#沉淀之委托的深入讲解

2020-01-05 09:37:19刘景俊

在调用委托的时候,会调用列表中的所有方法

声明委托类型

如下,delegate关键字开关,然后是返回类型,再定义名称与签名


delegate void MyDel(int vallue);

返回类型与签名指定了委托接受的方法形式

注意:委托类型是没有方法主体的

创建委托对象

使用new运算符创建对象


MyDel del = new MyDel(object.Func); //object.Func是个实例方法
Mydel _del = new MyDel(Object.Func); //Object.Func是个静态方法

使用快捷语法创建对象


MyDel del = object.Func; //object.Func是个实例方法
Mydel _del = Object.Func; //Object.Func是个静态方法

这种语法是能够工作是因为在方法名称和其相应的委托类型之间存在隐式的转换

创建委托对象后会将指定的方法加入到委托的调用列表中

由于委托是引用类型,可以通过赋值来改变包含在委托变量中的引用,如下:


MyDel del;
del = new MyDel(object.FuncA); //创建第一个对象
del = new MyDel(object.FuncB); //创建第二个对象

由于第二个对象也赋值给了变量del,因此del所引用的第一个对象将被垃圾回收器回收