1、委托和事件简介
委托的本质是一个类
事件是一个委托的私有变量加上两个公有的方法(事件的+=和-=),这是委托和事件的本质区别
2、事件和委托举例
1)string是一个类,而string s=“a”,这个s是string类型的一个变量
2)public delegate void myDel();相当于你创建了一个myDel的类,所以委托可以在任何地方创建,类需要实例化,所以委托也需要实例化,要myDel m=…;
3)申明一个事件 public event myDel myEvent;
4)事件myEvent是一个myDel类型的一个变量,因为是变量,所以事件只能在类里面申明,不需要实例化,有点类似与上面的哪个m,当然不全是,他还有两个方法(±、-=),调用一次+=方法,myEvent+=MethodA;其实是吧MethodA方法,封装成一个没有、Del类型的委托对象,然后把这个对象的引用赋值给myEvent变量。如果多次调用+=,就是多个方法封装成了多个没有myDel委托对象,然后这些委托对象放在一个列表里面,然后myEvent就指向这个列表,触发的时候,就是调用这个列里面的所有委托的lnvoke方法
3、事件和委托用法上的区别
主要就是事件只能在申明他的这个类里面触发,委托没有这个限制。
4、委托语法使用
1)语法:public delegate void BuyWaterEventHandler();
2)其中delegate是关键字,声明委托的时候命名时后缀加入EventHandle
3)方法
我们看方法,是实现买水这个功能的,而委托是委托你去帮我买水的。方法是具体做实现功能,委托只是命令而已。
具体使用委托来实现刚刚哪个委托李某人去买水的程序护设计
最后输出结果
**注意:**这里声明的委托方法,BuyWater委托中加入LiBuy.LiBuyWater买水的方法,这个方法参数必须加入,因为委托的构造函数参数不为空。同时需要注意委托参数的返回类型都是要和具体委托方法一样的。
在这个例子中返回string类型 ,都是无参的
事件和委托 (一)
最新推荐文章于 2023-08-21 18:25:26 发布