日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

???? 一般我們可以使用ref,out達到向外傳遞參數目的。 Action<T>是一個特殊的委托,除了常規應用。我們還可以用它來實現簡單地向外傳遞參數。直接看下面的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>可以實現。為什么會有這樣的代碼產生呢?源于這樣的場景,有一個方法只有一個輸入參數,返回void 。我們為了不改變原來這個方法參數簽名,增加新的子方法,使用Action<T>向外傳遞參數。然后再用原方法Wrap新的子方法。
??? 關于Action<T>還有很多精彩的運用,Builder模式與Fluent接口。
??? 希望對您開發有幫助。


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

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

轉載于:https://www.cnblogs.com/lonelyxmas/p/3805250.html

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。