程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Linq學習(7) 延遲執行 & 查詢非泛型集合(2)

Linq學習(7) 延遲執行 & 查詢非泛型集合(2)

編輯:關於C語言

從輸出結果可以看出,查詢時並沒有立即計算結果,而是輸出時才進行計算。

其實在構造查詢語句時,只是傳遞的相應操作的委托,並沒有真正執行查詢操作,真正的執行是在 IEnumerator<T> 的 GetEnumerator() 方法中執行的,每取得一個元素就執行一次。延遲執行還有個好處是改變數據源時不需要構造新的查詢語句即可執行獲得想要的結果。

示例:

static void Main()
{
  // 原始集合
  int[] collection = { 10, 11, 12, 13, 14 };
  // 查詢集合
  var result = from i in collection
         select DoubleInt(i);
  // 輸出原集合
  foreach (var i in result)
  {
    Console.WriteLine(i);
  }
  Console.WriteLine("Change data source:");
  // 改變集合
  for (var i = 0; i < collection.Length; i++)
  {
    collection[i] += 10;
  }
  // 輸出改變後的集合
  foreach (var i in result)
  {
    Console.WriteLine(i);
  }
}
static int DoubleInt(int i)
{
  return i * 2;
}

// 結果:// 20
// 22
// 24
// 26
// 28
// Change data source:
// 40
// 42
// 44
// 46
// 48

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