程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 深入理解C# 3.0的五項主要改進(3)

深入理解C# 3.0的五項主要改進(3)

編輯:關於C語言

4.匿名類型

C# 2.0引入了匿名方法,C# 3.0推出匿名類型。匿名類型與匿名方法類似,它們都是以嵌入方式建立,並沒有正式的名稱。在建立一個匿名類型,您必須組合上述對象初始化器和隱型局部變量兩個概念。下面是一個匿名類型的例子:

varmyType = new { Length = 79, Width = 30 };

匿名類型的范圍與任何其它變量的范圍相同。例如,下面代碼塊中的cobra實例僅僅在Speed函數塊中有效:

private void Speed()
{
 var cobra = new { Horsepower = 550, Torque = 570 };
}

如果一個匿名類型被初始化而另一個匿名類型位於范圍域中,並且它們的簽名相同,第二個類型將自己占用第一個類型的類型。例如,在下面這段代碼中,cobra和mustang都是匿名類型,並且可以彼此設定。

private void Speed()
{
 var cobra = new { Horsepower = 550, Torque = 570 };
 var mustang = new { Horsepower = 300, Torque = 300 };
 mustang = cobra; //or you could say cobra = mustang
}

5 .LINQ

在之前的C#版中,開發者應用許多不同的查詢語言來訪問不同的數據源。例如,要查詢一個XML文件,開發者會使用XPath,要查詢一個SQL數據庫,開發者將使用SQL。在過去這種方法十分有效,並且現在仍然是訪問各種數據的主要方法。但是,這種方法具有一些缺點。 一個顯著的缺點在於:開發者必須以一種不同的語言,而非他們當前使用的語言(如SQL或XPath)來編寫查詢代碼。另一個缺點是,在執行某些查詢語言,如SQL時,開發者必須編寫映射代碼將查詢結果轉化為可用的C#業務對象。

C#3.0推出一種稱之為語言集成查詢(LINQ)的新方法。應用LINQ,開發者可以編寫出能夠搜索任何IEnumerable<T>數據源的代碼。所以除了應用TSQL訪問MS SQL數據庫,應用XPath訪問XML文件外,他們還可以應用LINQ。

下面的代碼(列表C)是一個LINQ查詢的例子,它返回所有OrderCount大於10的顧客:

列表C

using System;
using System.Query;
using System.Collections.Generic;
public class SampleClass
{
 static void Main()
 {
  List<Customer> customers = GetCustomers();
  //Write our query to retrIEve customers who have more than
  // 10 orders.
  IEnumerable<Customer> queryResult = from customer in customers
  where customer.OrderCount > 10
  orderbycustomer.ID
  select customer;
 }
}

與SQL或XPath不同,LINQ查詢用C#,而非第三方語言編寫。這樣,查詢就不會出現類型問題,開發者也就沒有必要編寫映射代碼把查詢返回的數據轉化成C#對象,而由LINQ API自動處理映射。

基本上,在ORM解決方案中,LINQ對象用途很大。同樣,它的范圍也非常廣泛,有大量MSDM信息描述了它的功能。欲了解更多信息,請訪問LINQ主頁。

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