程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [C# 3.0 入門] [第一章 Lambda表達式] 第五節(2)

[C# 3.0 入門] [第一章 Lambda表達式] 第五節(2)

編輯:關於C語言

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就能給替換了。如果經常使用這種技術,代碼的結構也會更明快簡潔。

【短評】“=>”是不等號?

BASIC系的語言中,不等號的寫法,“=”與“>”的順序沒有明確的規定。這樣的語言中,“>=”“=>”是等價的。正因為如此,熟悉了這樣的語言的話“=>運算符”就很容易會被誤認為是不等號。

例如如果有下面的Lambda表達式,如果是有上述語言的使用經驗的人看來,很容易就認為是不等號了。

x => 0

但是,使用Visual Basic的IDE的程序員,幾乎就不會看見作為不等號的“=>”。因為在IDE中輸入“=>”時,當場就會被自動替換為“>=”(Visual Basic 6.0與Visual Studio 2008會要求確認)

所以綜合起來考慮,如果是使用會把“=>”與不等號搞混的編程語言,那最好就要養成良好的編程習慣。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved