C#委托和事件。
因为最近在学C#,还是坚持每天对昨天的学习做一个总结,昨天学的是委托和事件。以下是个人对委托和事件的理解,不当之处还请批评指正。
委托:就象我们日常生活中的代理吧,象委托同学买火车票一样,你(触发事件)要给同学身份证和钱(作为参数),同学才执行买这个动作(方法),返回的就是你的一张票(返回值)。委托因为它也是一个引用类型,所以要用到他的时候都要实例化它,一个是在没有事件的情况下,怎么运用委托。
public delegate void MyDelegate1();//说明方法中没有参数和返回值。
public delegate int MyDelegate2(int a,int b);//方法中带两个参数,返回值为int 类型。
static void Main(string[] args)
{
Program p=new Program();
MyDelegate1 de1=new MyDelegate1(p.Hello);//实例化一个委托对象,和方法产生关联。
de1();//调用
MyDelegate1 de=de1+new MyDelegate1(p.Say);//也可以相加
de();//先调用de1()的。
MyDelegate2 de2=new MyDelegate2(p.Sum);
Console.WriteLine(de2(23,56));//
}
Public void Say()
{
Console.WriteLine("Say Hi");
}
Public void Hello()
{
Console.WriteLine("Hello");
}
Public int Sum(int a,int b)
{
return a+b;
}
上面没有用到事件来触发,下面写一下事件的触发,怎么实现。
public delegate void Mydelegate1();//声明委托
public event Mydelegate1 MyEvent;//声明事件,并指定他的委托。
static void Main(string[] args)
{
Program p=new Program();
p.MyEvent = new Mydelegate1(p.Hello);
p.Raise();
}
Public void Raise()
{
if(MyEvent!=null)
{
MyEvent();
}
}
public void Hello()
{
Console.WriteLine("Hello");
}
//当看到winform里面
this.Load += new System.EventHandler(this.Form1_Load);这也是一个委托的实例。