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.宣告事件 委託 ...