日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net中用Action等委托向外传递参数

發(fā)布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net中用Action等委托向外传递参数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
.net中用Action等委托向外傳遞參數(shù) 原文:.net中用Action等委托向外傳遞參數(shù)

???? 一般我們可以使用ref,out達(dá)到向外傳遞參數(shù)目的。 Action<T>是一個特殊的委托,除了常規(guī)應(yīng)用。我們還可以用它來實現(xiàn)簡單地向外傳遞參數(shù)。直接看下面的UnitTest代碼:

1: [TestMethod] 2: public void PassOutParametersUsingDelegate() 3: { 4: int i = 0; 5: string messgae = string.Empty; 6: int? addedNumber = 1; 7:? 8: //It is pass parameter by Action<T1,T2> 9: Foo1((a, b) => 10: { 11: i = a; 12: messgae = b; 13: }); 14:? 15: //It is pass parameter by Func<T1,T2,TResult> 16: Foo2((a, b) => 17: { 18: i = a; 19: messgae = b; 20: return addedNumber; 21: }); 22:? 23: Foo2((a, b) => 24: { 25: return a+100; 26: }); 27:? 28: Assert.AreEqual("i=15,message=fifteen", string.Format("i={0},message={1}", i, messgae)); 29:? 30:? 31: } 32:? 33: private void Foo1(Action<int, string> action) 34: { 35: int number = 15; 36: string msg = "fifteen"; 37:? 38: action(number, msg); 39: } 40:? 41: private void Foo2(Func<int, string, int?> func) 42: { 43: int number = 15; 44: string msg = "fifteen"; 45:? 46: int? tempInt = func(number, msg); 47: }


上面的代碼我們演示使用Action<T>, 有注意到我們把a,b兩個值傳遞給方法外面的變量。同樣的,我們用Func<TResult>可以實現(xiàn)。為什么會有這樣的代碼產(chǎn)生呢?源于這樣的場景,有一個方法只有一個輸入?yún)?shù),返回void 。我們?yōu)榱瞬桓淖冊瓉磉@個方法參數(shù)簽名,增加新的子方法,使用Action<T>向外傳遞參數(shù)。然后再用原方法Wrap新的子方法。
??? 關(guān)于Action<T>還有很多精彩的運用,Builder模式與Fluent接口。
??? 希望對您開發(fā)有幫助。


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
該文章也同時發(fā)布在我的獨立博客中-Petter Liu Blog。

posted on 2014-06-24 00:23 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/p/3805250.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的.net中用Action等委托向外传递参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。