導航:首頁 > 方法技巧 > 委託鏈上的方法如何執行

委託鏈上的方法如何執行

發布時間:2024-03-13 23:26:03

㈠ 請問C#中的委託是什麼如何使用

委託的用法很多:一般是用於聲明事件和回調的委託,還可以是用於代表方法標簽的委託.
書本上的委託只是對委託的定義與具體怎樣調用問題,沒有涉及到委託的真正實用的地方。其實委託是與事件和回調
一起來使用的,你可以看一下C#非同步調用,與多線程處理里等就可以看到委託的作用了。
下面是別人的理解我覺得還是比較好的:
1)有了委託你就可以把方法看作像常數一樣,而委託就是該常數類型的變數.
從這個角度看來用於聲明事件的委託就是聲明這個事件觸發以後所調用的方法的標簽或者特徵.只有符合該標簽(參數個數和參數類型)的方法才可以做為該用於該事件的回調.
一個事件觸發了,你可能需要用多個方法處理該事件或者說該事件調用了多個方法(每個事件的實例都有一個需要調用的方法列表,當事件觸發它會逐個調用列表中的每個方法)
2)通過使用委託你可以實現對方法變化的封裝.
打個比方:如果你騎自行車,你需要有騎自行車的方法DriveBike().如果你騎摩托車你需要有騎摩托車的方法.現在你有一個方法DriveMoto.現在你需要定義一個方法,實現你騎(自行車或者摩托車)到某地DriveTo(地點,騎的方式)
騎的方式這里其實就是委託.在使用的時候,如果你是騎自行車你就用DriveBike實例化委託的實例帶入DriveTo方法,如果你騎摩托車你就用DriveMoto實例化"騎的方式"這個委託帶入DriveTo方法.

㈡ c#委託鏈的問題

你的委託d1上的確已經掛上了兩個方法,當d1被調用的時候,那兩個方法也的確都被觸發調用到了。
不過多個方法有多個返回值,而只有一個變數來接受,所以後面被調用的方法的返回值,就把前面方法的返回值覆蓋掉了。換句話說,前面的返回值都被丟棄掉了。

這也是定義事件委託的時採用void作為返回值的原因。

【回答補充】

你可以去看看系統類庫提供的委託/事件,都是void返回類型的。

如果你非要做一個帶返回值的委託,那可以這樣做了:
......
public string CreateDelegate()
{
Class1 c1 = new Class1();
MyDelegate d1 = new MyDelegate(c1.delegateMethod1);
d1 += c1.delegateMethod2;
string d = "";
foreach (MyDelegate x in d1.GetInvocationList())
{
d += x("Hello World");
}
return d;
}
......

閱讀全文

與委託鏈上的方法如何執行相關的資料

熱點內容
用酒精清洗廁所用什麼方法最好 瀏覽:837
教室亂扔垃圾解決方法 瀏覽:948
甲狀腺結節的治療方法及標准 瀏覽:376
等差數列教學方法分析 瀏覽:107
聯軸器耐磨檢測方法 瀏覽:330
a8電腦音效卡的使用方法 瀏覽:855
土壤農葯殘留檢測方法 瀏覽:802
幫助抑鬱症的訓練方法 瀏覽:281
油煙怎麼處理最簡單的方法 瀏覽:233
銳歐導航安裝方法 瀏覽:912
兒童抽水機抓小鳥的方法簡單的 瀏覽:483
陷印的方法有哪些 瀏覽:80
歐皇檢測儀使用方法 瀏覽:545
格力水冷機組小溫差計算方法 瀏覽:426
治療孩子的方法和技巧 瀏覽:669
烤鴨店有哪些經營方法 瀏覽:83
維生素e正確使用方法 瀏覽:573
吉他夾的使用方法 瀏覽:570
頸霜的使用方法 瀏覽:862
教育研究方法的課題論證報告 瀏覽:995