国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C# 3.0新特性初步研究 Part3:使用拉姆達表達式

2024-07-21 02:28:59
字體:
來源:轉載
供稿:網友

拉姆達表達式(lambda expression)
可以算是一種匿名方法的實現吧。

在c# 2.0中引入了匿名方法的概念,我們可以寫下如下代碼:
 1class program
 2{
 3static void testlambdaexpression()
 4{
 5     list<int> list = new list<int>();
 6   
 7    list.add(1);
 8    list.add(2);
 9    list.add(3);
10    list.add(4);
11
12    list<int> evennumbers = list.findall(delegate(int i) { return (i % 2) == 0; } );
13
14    foreach (int evennumber in evennumbers)
15    {
16        console.writeline(evennumber);
17    }
18}
19}
20
21static void main(string[] args)
22{
23testlambdaexpression();
24}
25
 匿名方法避免了一些“極小函數”的出現,適當使用可以提高代碼的可閱讀性,顯得清爽一點。
(list的findall方法需要一個delegate參數,所以我們可以這樣謝哈)

在c# 3.0中,我們可以這樣寫:


 1static void testlambdaexpression()
 2{
 3var list = new list<int>();
 4   
 5    list.add(1);
 6    list.add(2);
 7    list.add(3);
 8    list.add(4);
 9
10var evennumbers = list.findall(i => (i % 2) == 0);
11
12foreach (int evennumber in evennumbers)
13{
14        console.writeline(evennumber);
15    }
16}
其中i=>(i%2)==0就是我們說的lambda expression,在這里它就起到了原來匿名方法的作用,同時提升了代碼的可閱讀性。
下面是一個復雜一點的lambda expression的例子:
1fruit.filterby((string name, double price) => name == "banana" && price < 2.00);
看了這個例子應該可以自己動手寫一些東西了吧(下樓買瓶可樂去也)

這里還有一個有趣的東西:lambda expression tree(拉姆達表達式樹)
這是一種用來在運行時把表達式作為數據的技術,我們可在運行時靈活的控制和改變表達式,
增強程序的靈活性!
還是看代碼吧,這樣直接一點:
 1using system.expressions;
 2
 3static void main(string[] args)
 4{
 5     expression<func<int, bool>> filter = n => (n * 3) < 5;
 6
 7     binaryexpression lt = (binaryexpression) filter.body;
 8     binaryexpression mult = (binaryexpression) lt.left;           
 9     parameterexpression en = (parameterexpression) mult.left;           
10     constantexpression three = (constantexpression) mult.right;
11     constantexpression five = (constantexpression) lt.right;
12                       
13     console.writeline("({0} ({1} {2} {3}) {4})", lt.nodetype,
14              mult.nodetype, en.name, three.value, five.value);
15}
輸出:
(lt (multiply n 3) 5)
通過這種技術,我們對于數據和數據表達式的操作可以變得更加輕松,不用動不動就是寫方法了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仪征市| 游戏| 赤城县| 肥城市| 乐业县| 朝阳市| 天气| 明溪县| 旺苍县| 万源市| 中方县| 晋江市| 长阳| 调兵山市| 沙湾县| 平江县| 宁明县| 彰化市| 宣恩县| 桃园市| 太仓市| 于都县| 万山特区| 滁州市| 石台县| 东阳市| 绍兴市| 德兴市| 土默特左旗| 东乌珠穆沁旗| 静安区| 和林格尔县| 丹阳市| 陕西省| 蚌埠市| 安岳县| 勃利县| 即墨市| 松江区| 高清| 安化县|