C# 委托专题
单播委托:一个委托只指向一个方法;
多播委托:一个委托指向多个方法,形成一个方法链;
Main是静态方法,里面只能引用静态方法,而不能引用实例方法;
Main可以进行类的实例化,然后引用实例化后的方法;
委托的使用流程:声明委托,实例化委托,绑定事件,调用委托(也就是调用委托绑定的方法);
声明委托的地方:1类的外面2类的里面,方法的外面;不能在方法的里面声明委托;
委托实例化的方法
1用new关键字,将一个new委托赋值给委托
2不用new,直接将一个方法赋值给委托
第一次实例化(第一次绑定方法):MyDelegate mydel2 = new MyDelegate(Add);或MyDelegate mydel=cal.Add;
第二次绑定方法(多播委托)del += F3;mydel2 +=new MyDelegate(Add);
+=可以是增加一个新的方法,也可以增加一个新的委托new delega,类型必须相同;
+=增加委托方法,-+删除委托方法;在没有增加某方法时进行-=删除操作,也不会报错;
Del del = (Del)Delegate.Combine(new Del(F1), new Del(F2));
关于Delegate.Combine方法,两个参数必须为同种类型的委托,即使两个委托的参数返回值都一样也不行;
也就是两个参数必须使用同一个声明的委托类型;否则报错;
Combine返回值是Delegate基类型,必须显示转换为参数的那种类型;否则报错;
接收类型和两个参数类型必须是同一个委托声明的类型;否则报错;
例如:下面三个委托声明类型相同,但是不能用在Combine方法中;
Combine方法很鸡肋,又复杂,要求又多;
public delegate void Del();
public delegate void Del_1();
public delegate void Del_2();