All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
通过序列化和反序列化泛型数据实体集合来实现持久化数据对象的方法_.net资料_编程技术
简单学习动态网页制作PHP中的Sessions_php资料_编程技术
c#中GDI+图形图像:用直线和曲线消除锯齿
IIS同一站点下aps.net,1.1与2.0,共存方法_[Asp.Net教程]
转义符使用小结_[PHP教程]
Apache 2.2 完全参考手册(中文版)_[PHP教程]
AJAX进度条_[AJAX教程]
ExtJS与.NET结合开发实例(Grid之数据显示、分页、排序篇)_[Asp.Net教程]
PHP5 OOP编程之代理与定制异常_[PHP教程]
小结:PHP编程过程中应当注意的各种注意事项_php资料_编程技术
Reading number is top 10 pictures
西游日记2
Earthquake hedge common sense
The money of more than 100 countries and regions21
Female model behind the bitterness, often being overcharged2
Absolutely shocked. National geographic 50 animal photographys9
Gang rape
29 the belle stars after bath figure2
A man's favorite things7
mythology hero1
Look for from human art net, is good--2
Download software ranking
Desire a peach blossom
The king of fighters 97(Mobile phone games-apk)
linux安装大全
美女写真3
Boxer's Top ten classic battle4
Sora aoi's film--cangkong_Blue.Sky
Unix video tutorial3
The Bermuda triangle1
Tram sex maniac 2 (H) rar bag12
Tram sex maniac 2 (H) rar bag17
delv published in(发表于) 2014/1/6 9:05:36 Edit(编辑)
C#,3.0新特性初步研究,Part3:使用拉姆达表达式_[Asp.Net教程]

C#,3.0新特性初步研究,Part3:使用拉姆达表达式_[Asp.Net教程]

C# 3.0新特性初步研究 Part3:使用拉姆达表达式_[Asp.Net教程]

拉姆达表达式(Lambda Expression)
可以算是一种匿名方法的实现吧。


在C# 2.0中引入了匿名方法的概念,我们可以写下如下代码:
1class Program
2{
3static void TestLambdaExpression()
4{
5 List list = new List();
6
7 list.Add(1);
8 list.Add(2);
9 list.Add(3);
10 list.Add(4);
11
12 List 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();
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> 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)
通过这种技术,我们对于数据和数据表达式的操作可以变得更加轻松,不用动不动就是写方法了。


来源:网络







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.