张德长

导航

C# 委托专题

单播委托:一个委托只指向一个方法;

多播委托:一个委托指向多个方法,形成一个方法链;

Main是静态方法,里面只能引用静态方法,而不能引用实例方法;

Main可以进行类的实例化,然后引用实例化后的方法;

委托的使用流程:声明委托,实例化委托,绑定事件,调用委托(也就是调用委托绑定的方法);

声明委托的地方:1类的外面2类的里面,方法的外面;不能在方法的里面声明委托

委托实例化的方法

1new关键字,将一个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();

posted on 2022-03-05 17:34  张德长  阅读(46)  评论(0编辑  收藏  举报