LINQ in Action 一書第二章翻譯原稿(第二章C# and VB.NET語言增強)

iDotNetSpace發表於2009-07-01

第二章C# and VB.NET語言增強

本章包括:

C# 3.0 和 VB.NET 9.0怎樣使用LINQ

隱式型別化區域性變數

物件初始值設定項

lambda 表示式

擴充套件方法

匿名型別

    在第 1 章我們討論使用 LINQ 的動機,並引入一些程式碼來讓您瞭解如何工作。在本章我們將介紹該語言。

    使用LINQ允許查詢混合到程式語言的擴充套件。LINQ 是C# 和 VB.NET 語言的擴充套件並使用新結構。在學習之前很重要的是回到LINQ身上來,本章是解釋LINQ如何讓 C# 和 VB.NET 語言已變得如此豐富。請注意我們在使用linq是很成熟的。我們講解LINQ重點時間不能太長,因此本章不能詳細講解每一部分功能。當您熟悉各種功能的時候,本章將使您瞭解本書是如何講解問題的。在第 3 章我們將重點講諸如表示式目錄樹和查詢運算子的特定於 LINQ 的概念。然後在第三章您會用到LINQ相關功能。

2.1發現新的語言增強功能

    NET 2.0 奠下了很多 LINQ 需要協同工作的基礎。事實上,它引進多項重要的語言和 Framework 增強功能。例如.NET 現在支援泛型型別,以及需以達到深入資料整合的 LINQ 目標,可以引數化的型別 —

否則型別系統不夠豐富。C# 2.0 還新增匿名方法和迭代器。這些功能作為新的資料和程式語言之間的整合級別的基石。

    我們預期這本手冊的讀者瞭解基本.NET 2.0 提供的功能。我們將您提供 2.4 節中的匿名方法上的復修我們提出 lambda 表示式和我們將檢討第 3 章中的迭代器時。 LINQ 公開諸如 C# 和 VB.NET 語言的查詢語法更多的功能。 C# 3.0 和 VB.NET 9.0 (也稱為 VB 2008年) 生成泛型、 匿名方法和迭代器,作為 LINQ 設施的主要元件。這些功能包括,

1、隱式型別化的許可證的區域性變數從表示式用於初始化它們推斷出型別本地變數。

2、物件初始值的構造和物件的初始化。

3、lambda 表示式提供的作為發展匿名方法改進的型別推斷和轉換為委託型別和表示式目錄樹,我們將在下一章討論。

4、擴充套件方法令可以擴充套件現有的型別和構造的型別與其他方法。 使用擴充套件方法型別不是擴充套件,但看起來像是擴充套件。

5、匿名型別,這是自動推斷出,並從物件初始值設定項建立的型別。

    而不用只列出這些新的語言功能和詳列他們逐一,對發現他們而言,是一個持續的示例。這有助於我們清楚瞭解他們可以幫助我們在日常的編碼。

    我們將與最簡單的程式碼可能使用唯一的.NET 2.0 構造啟動,然後我們將的逐步引入新的語言功能改善。

    每個重構的步驟將指向特定問題或語法功能。首先,讓我們熟悉簡單的示例: 應用程式輸出執行程式的列表。

2.1.1執行程式通用列表

我們要獲取的我們計算機上執行的程式的列表。在系統中是很輕鬆的。引用Diagnostics.Process.GetProcesses API。

注意 在示例中我們使用GetProcesses方法,因為它返回的結果,可能會因每次一個泛型列表被呼叫該方法而不同。這使得我們的示例比會基於一個靜態列表的專案更切合實際。

表2.1簡單的目標的示例 C# 2.0 程式碼。

表2.1示例.NET 2.0 程式碼列出程式

using System;

using System.Collections.Generic;

using System.Diagnostics;

static class LanguageFeatures

{

   static void DisplayProcesses()

   {

     List processes = new List();//準備字串的列表

     foreach (Process process in Process.GetProcesses())

     processes.Add(process.ProcessName);//生成的程式的列表

   }

   static void Main()

   {

     DisplayProcesses();//列印到螢幕每一行。

   }

}

    我們程式變數指向的字串列表。我們使用該型別基於泛型型別List。在.NET 2.0 中最重要的是新增了泛型的支援。它們允許我們最大化程式碼重用、 型別安全和效能。就像我們現在做的最常見使用泛型是建立強型別的集合的類。您將注意到 LINQ 廣泛使用泛型。在該列表,我們使用一個名為ObjectDumper類來顯示結果。ObjectDumper 是作為 LINQ 程式碼示例的一部分由 Microsoft 提供一個實用工具類。在整個這本書的很多程式碼示例中,我們將重複使用 ObjectDumper類。(這些示例的完整原始碼是在 http://LinqInAction.net可供下載。)可用於 ObjectDumper 轉儲物件到控制檯的記憶體中。尤其是用於除錯目的;我們將使用它在這裡顯示我們處理結果。

    這個版本的程式碼並沒有更多的功能,只是將程式名稱加入的到列表中。控制檯程式將每個程式顯示出來。然而,在未來的示例中,我們將有更復雜的結果以顯示。ObjectDumper 將然後儲存我們一些程式碼為我們做工作顯示出來。

這是 2.1 製作某些示例輸出

firefox

Skype

WINWORD

devenv

winamp

Reflector

這個示例是十分簡單的。很快,我們將希望能夠對此列表進行篩選、排序它,或執行其他操作如分組或預測。讓我們修改這個示例。關於程式名稱,我們會有更感興趣的資訊。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-608078/,如需轉載,請註明出處,否則將追究法律責任。

相關文章