C#委託和事件。

來源:互聯網
上載者:User

         因為最近在學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);這也是一個委託的執行個體。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.