C 中委託與事件

2021-08-17 06:25:34 字數 1149 閱讀 7043

c#為了型別安全,預設並不支援指標。而是採用委託的方式。

委託的宣告:

屬性 修飾符 delegate 返回型別 委託型別名(引數列表)。其中返回型別和引數列表共同決定了委託型別能關聯的一組方法

public delegate int tdelegate(int a,int b);  //宣告委託

在類classdelegate中建立乙個靜態方法add

public class classdelegate

}

委託的例項化:

委託型別名和類名一樣,都用於建立物件。    委託物件=new 委託型別(關聯方法)

tdelegate de = new tdelegate(classdelegate.add); //例項乙個委託

委託的引用:

在建立委託物件以後,通過引用該物件可以實現對其關聯方法的呼叫(把委託物件名當做方法名來使用)。

private void ******button3_click(object sender, eventargs e)

事件:

類或物件可以通過事件向其他類或物件通知發生的相關事件。

先建立form1和xtraform1兩個窗體。

在xtraform1中定義乙個事件:

public delegate void tdelegate(string s);  //宣告關於事件的委託 tdelegate為事件型別名稱

public partial class xtraform1 : devexpress.xtraeditors.xtraform

private void button1_click(object sender, eventargs e)

}

form1中訂閱事件:

帶事件的類例項.事件名稱+=new 事件型別名稱(事件處理方法)

private void ******button3_click(object sender, eventargs e)

//編寫事件處理方法 public void(事件處理方法名稱)

public void testfm_btnevent(string s)

C 中委託和事件

當我們在窗體下定義變數後,是不是可以輕而易舉在此窗體使用這個變數呢?那麼如果跨窗體引用呢?其實也簡單,普遍操作,定義乙個全域性變數,但是這樣操作不規範,取而代之的是應該在某個窗體定義乙個類,然後在類中宣告乙個靜態變數,此時跨窗體使用的時候直接使用classname.staticname 既然變數可以...

C 基礎系列 C 中委託與事件 一

我們都知道,c 中有 介面 這個概念,所謂的 介面 就是定義一套標準,然後由實現類來具體實現其中的方法,所以說 介面,是一組類的抽象 同樣道理,我們可以將 委託 理解為 方法的抽象 也就是說定義乙個方法的模板,至於這個方法具體是怎麼樣的,就由方法自己去實現。我們知道介面的最大好處就是可以實現多型,同...

C 中委託與事件的學習小結(二)

接上篇繼續寫,順便也做個記錄 下面該介紹事件了。事件就是在委託型別前面加上乙個event關鍵字,就變成了事件了,事件的具體一些用法也和委託非常類似!哈哈,這麼理解應該沒毛病吧 當然,兩者之間還是有區別的。我們用乙個小例子來做個 明。例 class program static void main s...