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
foreach (Process process in Process.GetProcesses())
processes.Add(process.ProcessName);//生成的程式的列表
}
static void Main()
{
DisplayProcesses();//列印到螢幕每一行。
}
}
我們程式變數指向的字串列表。我們使用該型別基於泛型型別List
這個版本的程式碼並沒有更多的功能,只是將程式名稱加入的到列表中。控制檯程式將每個程式顯示出來。然而,在未來的示例中,我們將有更復雜的結果以顯示。ObjectDumper 將然後儲存我們一些程式碼為我們做工作顯示出來。
這是 2.1 製作某些示例輸出
firefox
Skype
WINWORD
devenv
winamp
Reflector
這個示例是十分簡單的。很快,我們將希望能夠對此列表進行篩選、排序它,或執行其他操作如分組或預測。讓我們修改這個示例。關於程式名稱,我們會有更感興趣的資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-608078/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#語言————第二章 C#語言快速熱身C#
- 第二章 Swift語言Swift
- 第二章 C語言概述C語言
- 第二章--組合語言組合語言
- C#版本LINQ增強開源庫C#
- R語言實戰試卷 第二章R語言
- C# LINQ (語言整合查詢)C#
- 《Go 語言併發之道》讀後感 - 第二章Go
- Netty In Action中文版 - 第二章:第一個Netty程式Netty
- 使用google翻譯 api 翻譯中文成其他語言GoAPI
- [翻譯] Go 語言入門Go
- (翻譯)Dart語言概覽Dart
- play2.x 官網筆記擷取+翻譯 第二章(完)筆記
- 源語言、目標語言、翻譯器、編譯器、直譯器編譯
- Easy Translator語言翻譯類工具R語言
- PL/SQL第二章--基本語法SQL
- LoadRunner函式中文翻譯系列之一--Action函式
- 硬核觀察 #795 首個可以翻譯無文字語言的口語翻譯 AIAI
- 第二章
- 翻譯完了一本書
- Translatium Mac(多語言線上翻譯工具)Mac
- [翻譯]ElasticSearch官方文件-查詢語言Elasticsearch
- 編譯原理第二章學習總結編譯原理
- 編譯第二章時出錯?找原因編譯
- C#語言和資料庫技術基礎 ----------------- 第二章 簡答三 、C#資料庫
- 【自學組合語言Day-02】第二章:暫存器(CPU工作原理)組合語言
- 『翻譯』JavaScript 函數語言程式設計JavaScript函數程式設計
- Go 語言實現解析器翻譯Go
- 第二章 - 程式
- 第二章 jQuery技術解密(一)jQuery解密
- 中文程式語言中文程式語言實現:翻譯器
- 《Java8實戰》-讀書筆記第二章Java筆記
- 【書評:Oracle查詢優化改寫】第二章Oracle優化
- Laravel 本地語言包自動翻譯外掛Laravel
- Linguist for Mac(語言翻譯軟體)NGUIMac
- 【譯】WebSocket協議第二章——一致性要求(Conformance Requirements)Web協議ORMUIREM
- [轉] Linux and the Unix Philosophy第二章部分譯文Linux
- 打算翻譯一本機器學習的書機器學習