我看委託 一

2022-07-27 07:15:14 字數 2722 閱讀 2000

1.委託

(1).如何宣告乙個委託?

delegate 返回值型別  委託型別(引數)

delegate void saydelegate(string s);

(2).委託是如何指向方法的?對方法進行呼叫

★★★委託型別宣告的委託物件指向方法

★★★委託物件呼叫委託的方法(看方法的引數進行呼叫)

委託要呼叫方法,肯定要有方法被委託進行呼叫。

可以有以下兩種方法進行呼叫

①委託型別   委託物件  例項化委託(傳引數的名稱即方法的名稱)

saydelegate saydelegate =new saydelegate(say); //先要指向方法

//saydelegate("123");                          //然後才能進行呼叫

②saydelegate saydelegate1 = say;     //如果委託的物件沒有指向方法,沒有進行呼叫,缺少一步都不行。

//saydelegate("123");

(3).在方法裡呼叫委託

①宣告乙個委託  delegate bool adelegate(int i); 委託的返回值型別,引數型別要和委託呼叫的方法返回值型別,引數型別一致

②宣告乙個委託呼叫的方法

static bool say(int i)

③在方法中進行呼叫委託

static listlist3(listlist1, adelegate f)

}return list2;

}④**中呼叫呼叫委託的函式

listnewlist =list3(list1,say);

(4).簡單的在**中宣告委託

①//宣告乙個委託

public delegate bool adelegate(string s);

②宣告委託需要執行的方法

static bool say(string s)

else

③在需要執行委託物件的宣告

public adelegate adelegate1;

④在需要用委託呼叫方法的地方進行呼叫宣告

adelegate1 = new adelegate(say);

if (adelegate1(textbox1.text.trim()) == false)

(5).委託的複雜應用

第一步:宣告乙個委託

public delegate void delegate1(a a);

第二步:在使用者控制項的事件時,進行呼叫

private void button1_click(object sender, eventargs e)}}

第三步:在窗體中進行監聽,監聽呼叫方法   在別的地方進行監聽,如果聽到,則把方法傳給委託呼叫的方法。

clientname.adelegate = say; //把呼叫的方法傳給委託呼叫的方法

第四步:宣告監聽的方法

void say(a a)

}(6).如何引入事件的概念

①那麼存不存在清除監聽和冒充監聽呢?

第一步:宣告委託

public delegate void adelegate();

第二步:在需要的地方執行委託

private void button1_click(object sender, eventargs e)

}第三步:委託呼叫方法 控制項名.委託物件

username.adele +=new adelegate(say);

username.adele += new adelegate(hellow);

第四步:宣告委託呼叫的方法

void say()

void hellow()

②清除監聽

username.adele = null;

③冒充監聽

username.adele(); //注意:如果清除監聽後,則無法進行冒充監聽

(7).既然是這樣,那麼如何防止清除和冒充監聽呢,這裡就引入了事件的概念。

第一種方法:

private adelegate _adele;

public event adelegate adele

remove

}進行呼叫的時候,內部

if (_adele != null)

外部的話,只能通過屬性進行訪問。因為欄位是私有的,外部無法訪問。

第二種方法:其實是微軟給我們封裝好的

public event adelegate adele;

(8).★★★★★要看事件對應的委託是什麼,方法則宣告為什麼。

(9)小結:

委託的返回值型別,引數型別要和方法的返回值型別,引數型別一致。

委託可以直接把乙個引數傳遞給方法,可以有返回值,也可以沒有返回值。

class program

}console.readkey();

static bool oushu(int i)

}delegate bool adelegate(int i);

委託是乙個型別,是把乙個方法當做引數傳遞給另外乙個方法。

class program

console.readkey();

static listlist2(listlist1,adelegate f)

}return list2;

static bool oushu(int i)

}delegate bool adelegate(int i);

我看委託 三

1.委託 寫程式的時候,根據傳遞的引數,確定呼叫的是哪個函式,但我有一點疑問,委託的物件不是指向函式名,委託的引數不是和函式名的引數一樣,那麼這樣為什麼還不能確定呼叫的是哪個方法呢?委託可以認為具有相同簽名和返回值型別的有序方法列表。當委託被呼叫時,它呼叫方法列表中的每乙個方法。第一步 宣告委託 d...

我看《霍元甲》

接近年關,國內的 國外的,好的 爛的。電影比平常多多啦,象我這樣的喜歡看電影的人自然是看得很爽。最近這幾個月的大片,我基本上都看了,今天看到新聞說,深圳2005年一年的電影票房有7800多萬,算一算,還真不少,估計裡面也有我貢獻的那7萬分之1。今天剛剛看了 霍元甲 回來,看完了,有些惆悵,想不到,所...

我對委託 事件委託的一點理解

1.宣告關於事件的委託 public delegate void alarmeventhandler object sender,eventargs e 以上,宣告乙個委託,類似c語言中宣告乙個函式指標的型別,這個型別說明了 由它去宣告的指標 所指向的函式 的引數型別和返回型別。2.宣告事件 委託 ...