WEB开发网
开发学院软件开发C语言 [C# 3.0 入门] [第一章 Lambda表达式] 第五节:La... 阅读

[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体

 2010-09-30 20:59:45 来源:WEB开发网   
核心提示: List18 循环内判定的情况然而,如果使用Lambda表达式,[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体(2),就会有一种完全不同的答案,要判断所有数组的元素是否都满足一定的条件,用仅仅一句if就能给替

List18 循环内判定的情况

然而,如果使用Lambda表达式,就会有一种完全不同的答案。要判断所有数组的元素是否都满足一定的条件,只需用一个调用一个方法的Lambda表达式,事情就有着落了。在不损失可读性的范围内,把Lambda表达式写进if语句的条件中就能轻松的实现了。

实际写出来的例子如下。Any方法是,集合的元素中只要含有一个满足参数的Lambda表达式的元素就返回true。这个用到了.NET Framework的扩展方法,为了能够使用,要在代码前面加上“using System.Linq;”。

 1using System;
 2using System.Linq; // 为了使用Any方法
 3
 4class Program
 5{
 6  static void Main(string[] args)
 7  {
 8    int[] a = { 1, 2, 0 };
 9
10    if (a.Any(x => x == 0))
11    {
12      Console.WriteLine("数组中含有0");
13      return;
14    }
15    foreach (int n in a) Console.WriteLine(100 / n);
16  }
17  // 输出:数组中含有0。
18}
19

List19 使用Lambda表达式在计算之前就检验0值

如果是不能使用.Net Framework 3.5的场合,List19的if语句就要写成下面的形式(稍稍有些冗长),这样在.NET Framework 2.0下也同样能够使用。

if (Array.FindIndex(a, x => x == 0) >= 0)

这个例子,用Lambda表达式对集合数据的处理,感觉就像对单个值进行判断的“if ( n == 0 )”一样,对集合使用“if (a.Any(x => x == 0))”就能够处理。

总之吧,使用循环的方法对集合元素进行判断处理的方法,用仅仅一句if就能给替换了。如果经常使用这种技术,代码的结构也会更明快简洁。

Tags:入门 第一章 Lambda

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接