c#中的委託是什麼,事件是不是一種委託

來源:互聯網
上載者:User

標籤:

委託是一種在對象裡儲存方法引用的類型,同時也是一種型別安全的函數指標。 給你舉個例子: //聲明一個委託,這裡的NewDelegate()可以理解為是之後用來取方法的一個類型。 delegate void NewDelegate(); //下面定義的a,b兩種方法,你可以理解為NewDelegate這個類型的兩個執行個體。 public void a(){}; public void b(){}; public void main() { NewDelegate dgt1=new NewDelegate(a); NewDelegate dgt2=new NewDelegate(b); //dgt1指向方法a,dgt2指向方法b。也就是說一個方法的傳回值和參數類型數量與聲明的委託 //相符時,就可以用一個委託來調用這個方法。而這個方法的名稱作為參數傳遞給執行個體化的那個委託 } 事件是一種特殊的委託,為什麼這麼說呢? 用反編譯工具反編譯.net framework即可發現,事件的定義(這裡只是舉其中一種事件的定義,事件的參數在類庫中定義有區別),如下: public delegate void EventHandler(object sender, EventArgs e); 而常見的各種控制項的Click事件是如何定義的呢? public event EventHandler Click; 說明 Click事件是一個委託 而我們常見的一個Button控制項添加一個事件是怎麼做的呢? PageLoad裡:Button1.Click+=new EventHandler(Button1_Click); 定義Button1的事件 protected Button1_Click(object sender,EventArgs e){} 如你所見,這是一個很典型的委託調用。 

 

c#中的委託是什麼,事件是不是一種委託

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.