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);这也是一个委托的实例。

posted @ 2010-07-14 09:58  WIN8新人  阅读(238)  评论(0编辑  收藏  举报