调用带返回值类型的委托
注意:如果委托有返回值,且有多个委托,那么就返回最后一个方法返回的值。调用引用参数的委托
delegate void MyDelegate(ref int num);值会叠加委托就不举例说明了,is easy
事件:
1.事件是成员,不是类型 所有事件只能在类中声明,不能在一段可执行的代码中声明事件 要注意一点事件是成员,可以把它当做变量,不能独立于类 2.事件中包含一个私有的委托,触发事件时,通过委托调用方法列表中的数据3.事件的声明:需要一委托
访问修饰副 event 返回值类型 委托名 事件名; protected event void EventHandler myEvent; 定义事件时委托可以是自定义委托,也可以是.Net 预定义的委托类型 最常用的是 EventHandler委托 EventHandler 委托: public delegate void EventHandler(object sender,EventArgs e); 由上可以看到此委托有两个参数, 第一个参数:表示调用委托的对象,object类型 第二个参数:保持状态信息(说白了就是传递参数),但是EventArgs 类没有提供可以传递数据的属性,如果需要 传递数据,可以继承EventArgs类。见 实例 public event void EventHandler myEvent; 实例: public delegate void MyEventHandler(object sender,MyEventArgs me); public partial class Form1 : Form { public event MyEventHandler myEvent; public Form1() { InitializeComponent(); myEvent += new MyEventHandler(Form1_myEvent); }void Form1_myEvent(object sender, MyEventArgs me)
{ MessageBox.Show(me.Message); }private void btnClick_Click(object sender, EventArgs e)
{ MyEventArgs ma = new MyEventArgs(); ma.Message = "我们都是中国人,"; if (myEvent != null) { myEvent(sender,ma); } } }public class MyEventArgs : EventArgs
{ private String message;public String Message
{ get { return message; } set { message = value; } }}
最后注意:只有声明事件的类才能调用事件