delegate(委托)定義了一類方法,比如:
delegate int Transform (int x);
定義了一個名為Transform的只有一個形參且形參型別為int的回傳值為Int型別的委托;那么我們就可以將所有只有一個形參且形參型別為int的回傳值為Int型別的方法(函式)添加到這個委托中。
private int Square1(int x)
{
return x*x;
}
private int Square2(int x)
{
return x*x*x;
}
Transform t=Square1;
t+=Square2;
那么我可不可以這樣理解:
上述步驟中的定義委托:
delegate int Transform (int x);相當于我定義了一個泛型:List<string> listString;
Transfrom t=Square1;相當于:listString=new List<string>;listString.Add("第一個字串");
t+=Square2;相當于listString.Add("第二個字串");
當我們呼叫這個委托時:
t(3);就相當于foreach(string i in listString);
其實我想表達的意思就是:我認為委托就相當于一個存一類方法的"陣列"(或泛型),當委托被呼叫時,就相當于foreach這個"陣列"(或泛型)中的所有方法,然后每個執行一遍。而"+="就相當于往這個"陣列"里Add元素;"-="就相當于往這個"陣列"里Remove指定元素。
我這種理解對么?
uj5u.com熱心網友回復:
委托可以理解為Java中的單方法介面,C/C++中函式指標,JS中的Function型別。JS中可以將function直接當作Function的實體使用,而在C#中,顯式定義同型的委托來間接參考具體的方法。至于+=,-=差不多就是你理解的那樣。uj5u.com熱心網友回復:
然后每個執行一遍。而"+="就相當于往這個"陣列"里Add元素;"-="就相當于往這個"陣列"里Remove指定元素是的,理解的沒什么問題。
以前舊的寫法是 Add{} Remove{},如果我沒記錯,是這么系結事件的。
而且如果你賦值2次,的確是會執行2次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/188505.html
標籤:C#
下一篇:請教,檔案中SQL注入點
