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

委託鏈上的方法如何執行

發布時間: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;
}
......

閱讀全文

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

熱點內容
比率電化學分析方法什麼意思 瀏覽:406
活塞波浪環的正確安裝方法 瀏覽:547
腳上長疣的治療方法 瀏覽:111
要用什麼方法寫字才快 瀏覽:553
原神中找封神童簡單的方法 瀏覽:662
識字教學第六課畫教學方法 瀏覽:767
浙江防雷檢測技術和方法 瀏覽:327
wpsexcelif函數的使用方法 瀏覽:51
怎麼剝柚子最簡單方法妙招姐 瀏覽:669
天圓地方的圓角什麼方法下料簡便 瀏覽:787
三星4521f使用方法 瀏覽:495
後背風濕痛的治療方法 瀏覽:469
3種超級簡單下載視頻的方法 瀏覽:763
列表框有哪三種常用方法 瀏覽:784
三科通用矢量變頻器安裝方法 瀏覽:347
八爪椅圖解使用方法 瀏覽:343
礦物鑒別方法調查 瀏覽:495
男性有什麼避孕的方法 瀏覽:113
治療尖銳濕效果好的方法 瀏覽:831
你使用方法 瀏覽:794