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

 

第二章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<String> processes = new List<String>();//準備字符串的列表

     foreach (Process process in Process.GetProcesses())

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

   }

   static void Main()

   {

     DisplayProcesses();//打印到屏幕每一行。

   }

}

    我們進程變量指向的字符串列表。我們使用該類型基於泛型類型List<T>。在.NET 2.0 中最重要的是添加了泛型的支持。它們允許我們最大化代碼重用、 類型安全和性能。就像我們現在做的最常見使用泛型是創建強類型的集合的類。您將注意到 LINQ 廣泛使用泛型。在該列表,我們使用一個名爲ObjectDumper類來顯示結果。ObjectDumper 是作爲 LINQ 代碼示例的一部分由 Microsoft 提供一個實用工具類。在整個這本書的很多代碼示例中,我們將重複使用 ObjectDumper類。(這些示例的完整源代碼是在 http://LinqInAction.net可供下載。)可用於 ObjectDumper 轉儲對象到控制檯的內存中。尤其是用於調試目的;我們將使用它在這裏顯示我們處理結果。

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

這是 2.1 製作某些示例輸出

firefox

Skype

WINWORD

devenv

winamp

Reflector

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

2.1.2在類中對結果進行分組(p77)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章