Visual C 3 0 新特性概覽 1

2021-04-02 09:46:28 字數 1738 閱讀 1032

在發布visual studio 2005和c#2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c#的下一代版本:c# 3.0。儘管c# 3.0並沒有標準化,微軟還是在pdc(專業程式設計師會議)發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這也是本文所討論的主要內容:

·隱式型別本地變數

·匿名變數

·擴充套件方法

·物件和collection初始化符

·lambda表示式

·查詢表示式

·表示式樹

隱式型別本地變數

c# 3.0引進了乙個新的關鍵字叫做"var"。var允許你宣告乙個新變數,它的型別是從用來初始化符變數的表示式裡隱式的推斷出來的。也就是說,如下的表示式是有效的格式:

var i = 1;

這一行使用了1來初始化符變數i。注意這裡i被強型別到整型,它不是乙個物件或者vb6的變數,也不帶有其他物件或者變數的負載。

為了保證使用var關鍵字進行宣告的變數的強型別特性,c#3.0要求你將賦值(初始化符)放到和宣告(宣告符)的同一行。同樣,初始化符必須是乙個表示式,不能是乙個物件或者collection初始化符,也不能為null。如果多個宣告符對同乙個變數存在,那麼它們必須在編譯時被視作相同型別。

另一方面,隱式型別陣列,可以使用一點不同的格式,如下所示:

var intarr = new ;

上面一行的**將宣告intarr為int.

var關鍵字允許你使用匿名型別的例項,因而這些例項就是靜態型別的。所以,當你建立乙個包含一組資料的物件的例項的時候,你不必要預先定義乙個類可以同時支援這個結構和在乙個靜態型別變數裡的資料。

匿名變數

c# 3.0使得你可以靈活的建立乙個類的例項,而無需先寫這個類的**。所以你可以這樣寫**:

new

class __anonymous1

set }

public string skin set }

public int teeth set }

}

事實上,如果另外乙個滿足了相同的名稱和型別順序的匿名型別也被建立了,編譯器也會聰明的只建立乙個匿名型別來支援兩個例項來使用。同樣,因為例項都是乙個類的簡單例項,它們可以進行互換因為型別實際上是一樣的。

現在你擁有了這個類,但是你還需要一些東西來支援以上的類的某個例項。這就是"var"關鍵字的作用。它讓你擁有乙個以上匿名變數的例項的乙個靜態型別例項。這裡有乙個簡單好用的匿名型別的使用例子:

var frankenstein = new

擴充套件方法

擴充套件方法使你能夠使用額外的靜態方法來擴充套件各種型別。不過它們是非常有限的,也只能在例項方法不足夠的情況下才作為候補使用。

擴充套件方法只能在靜態類中被宣告,並且以關鍵字"this"放在方法的第乙個引數前來標識,如下就是乙個有效的擴充套件方法的例子:

public static int toint32(this string s)

如果乙個包含以上方法的靜態類被使用"using"關鍵字引進,toint32犯法將會出現在已有的型別中(雖然比現有的例項方法優先順序低),你可以這樣編譯和執行**:

string s = "1";

int i = s.toint32();

這使得你可以充分享用各種以有的內建的或者定義的型別的擴充套件特性,並且給它們加上新的方法。

Visual C 3 0 新特性概覽

在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這也是本文所討論的主要內容 隱式型別本地...

Visual C 3 0 新特性概覽

在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這也是本文所討論的主要內容 隱式型別本地...

Visual C 3 0 新特性概覽

visual c 3.0 新特性概覽 在發布visual studio 2005和c 2.0之後,微軟公司又馬不停蹄的展示了人們所期望的c 的下一代版本 c 3.0。儘管c 3.0並沒有標準化,微軟還是在pdc 專業程式設計師會議 發布了乙個預覽版本,因此心急的程式設計師可以看到一些所期望的特性,這...