撥開雲霧見青天c#委託與事件

來源:互聯網
上載者:User

c#委託與事件,理解了好多遍還是很彆扭,昨日又遇此問題,痛下決心,研究一番!

委託實際上就是把你定義的一個方法當作一個委託的參數來用。如:

public delegate void doSomething(string name);這是一個委託,相當於一個類,但是這個委託有一個string型別參數name和傳回型別void,強調執行個體化委託時,

委託的建構函式中傳遞的方法也應該有string型別參數和傳回型別void。

如方法:

public void Hello(string name)
{
Console.WriteLine("Hello," + name + "!");
}

也有一個string型別參數和傳回型別void。現在我們可以把委託和方法聯絡起來了如:doSomething dg=new doSomething(hello);

現在我們就能夠直接調用委託來帶代替具體的方法做事情了,如:dg("guoyuanwei"),輸出:hello,guoyuanwei

再看一個例子來 分析事件與委託

this.button1.Click += new System.EventHandler(this.button1_Click);

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("毛主席萬歲");
}這段代碼相信大家都知道就是點擊按鈕彈出毛主席萬歲這幾個字

以上代碼中System.EventHandler在微軟的手冊上是這樣定義的public delegate void EventHandler (Object sender,EventArgs e) 所以可以理解為就是一個委託,只不過這個委託是系統定義好的。this.button1_Click相當於委託建構函式中的參數即方法,此方法的定義中也有object sender, EventArgs e這兩個參數,與委託定義的一致。

this.button1.Click += 這是個事件,至於這個事件怎麼觸發的咱也不用管。

聯繫我們

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