日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

c#編程指南(二) LINQ表達(dá)式 (LINQ Expression)

 A_POST 2013-12-11

c#編程指南(二) LINQ表達(dá)式 (LINQ Expression)

C# 3.0 帶來(lái)了強(qiáng)大的基于方法的查詢(xún)LINQ。為了開(kāi)發(fā)者更好更方便的使用LINQ,微軟有隨即引入兩個(gè)新特性:

Lambda和Expression。Lambda簡(jiǎn)單來(lái)說(shuō)就是一個(gè)匿名方法的簡(jiǎn)略寫(xiě)法,Expression和Lambda的關(guān)系可以從

下面的一小段代碼看下:(.NET Framework 3.5, 記住引用命名空間System.Linq.Expressions;)

 

復(fù)制代碼
1 //simple express: 2 + 3
2   Expression e = Expression.Add(Expression.Constant(2), Expression.Constant(3));
3 //lambda express: () => 2 + 3;
4   LambdaExpression l = Expression.Lambda(e, null);
5 //compile to delegate.
6   Delegate d = l.Compile();
7 //convert to
8   Func<int> f = (Func<int>)d;
9 //
10  
11 Console.WriteLine(e);
12 Console.WriteLine(l);
13 Console.WriteLine(d);
14 Console.WriteLine(f());
復(fù)制代碼

 

輸出結(jié)果為下:

 

1 (2 + 3)
2 () => (2 + 3)
3 System.Func`1[System.Int32]
4  5

 

 

 

第一個(gè)就是構(gòu)造了一個(gè)簡(jiǎn)單的常數(shù)相加表達(dá)式,

第二個(gè)使用lambda形式表達(dá)。

第三個(gè)系統(tǒng)把lambda表達(dá)式編譯成一個(gè)委托,注意這個(gè)委托是一個(gè)泛型委托形式。

第四個(gè)使用委托調(diào)用函數(shù),輸出結(jié)果 2 + 3 = 5,是不是很簡(jiǎn)單啊。

 

 

下面來(lái)一個(gè)從上面稍微改進(jìn),帶參數(shù)的LINQ表達(dá)式:

復(fù)制代碼
1 ParameterExpression p = Expression.Parameter(typeof(int), "x");
2 //expression: x + 3
3   Expression e2 = Expression.Add(p, Expression.Constant(3));
4 //Lambda: x => x + 3;
5   LambdaExpression l2 = Expression.Lambda(e2, new ParameterExpression[] { p });
6 Delegate d2 = l2.Compile();
7 Func<int, int> f2 = (Func<int, int>)d2;
8
9 Console.WriteLine(e2);
10 Console.WriteLine(l2);
11 Console.WriteLine(d2);
12 Console.WriteLine(f2(3));
復(fù)制代碼

 

這個(gè)只是多使用了一個(gè)ParameterExpression,就是聲明了一個(gè)參數(shù)。第一個(gè)例子是無(wú)參函數(shù),那么這個(gè)就是簡(jiǎn)單的帶一個(gè)參數(shù)的表達(dá)式。結(jié)果如下:

(x + 3)
x
=> (x + 3)
System.Func`
2[System.Int32,System.Int32]
6

 

很簡(jiǎn)單吧。

示例代碼:下載

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多