委託在c#中應用非常廣泛。最近初學c#,記錄
delegate
一般語法:首先宣告delegate
public delegate void boilhandler(int param);
相比普通方法:
public float scrollvalue()
形式上只是多了乙個標誌 delegate而已。其實可以這樣理解前面一條宣告:
相當與定義了乙個引數型別,該引數型別表示所有可以接收int引數的方法。。
物件導向思想告訴我們一切都是物件,包括;int 、char 、string 甚至包括method(方法)。既然引數可以是其他物件,當然可以是method了。
定義乙個方法fuction,接收乙個boilhandler的引數型別。
fuction(boilhandler boilhandler )
假如還有個方法是這樣的:
void add(int i)
當其他地方呼叫fuction函式時就可以將add方法傳入,fuction(add);
這裡,對委託做乙個總結:
委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用if-else(switch)語句,同時使得程式具有更好的可擴充套件性。
既然如此,當然可以對委託經行例項化!並且可以通過c#語法將方法繫結到委託上,
例項化和string類是一樣的:
public boilhandler b1,b2;
繫結如:b1+=add; b2+=decrease;
呼叫時只需傳入引數b1 或者b2即可! 如:fuction(b1); 方法一經呼叫,即會執行add方法。。。
這裡需要注意一點是:我們可以將多個方法繫結到乙個delegate上。通常乙個例項即可。
如:b1 += add; b1 += decrease;如果呼叫fuction(b1);即會依次執行add和decrease兩個方法。。
+=表示繫結乙個方法,-=表示取消繫結;
下面是乙個比較簡潔的委託事例:
public class delegatemanager }}
客戶端這樣呼叫即可
static void main(string args)
今天到這,明天學習事件。初學,模糊不清,希望看到此部落格的有緣人不吝賜教。
C 委託機制
c 的委託機制,實際上相當於函式的指標。如下例項 1 定義乙個類 class person string name public void person this.name name private virtual void eat food food 在該類中定義了乙個eat方法。對該物件進行例項...
C 委託機制
c 委託相當於c c 中的函式指標。函式指標用指標獲取乙個函式的入口位址,實現對函式的操作。委託與c c 中的函式指標的不同之處是 委託是物件導向的,型別安全的和保險的,是引用型別,因此對委託的使用要 先定義,後宣告,接著例項化,然後為引數傳遞給方法,最後才能使用 定義委託使用關鍵字delegate...
c 委託 事件 機制
c 用委託來實現事件通知機制。委託相當與c 函式指標。整個過程涉及乙個呼叫者,乙個被呼叫者,還有就是這個委託。有以下幾步 1.申明委託,2.定義呼叫者和呼叫的函式,3.定義被呼叫者和具體實現的函式 被呼叫的函式 1.申明委託 在包裡或者類裡,public public delegate void p...