C 3 0中的新特性(1)

2021-05-24 01:24:35 字數 1445 閱讀 3276

1. 隱式型別

以前這樣宣告變數:

string str = "hello world";

現在可以寫成:

var str = "hello world";

str仍然被認為是string型別,因為c#編譯器根據初始值可以判斷出來。所以這種寫法要求在宣告變數時必須提供初始值。下面是陣列的寫法:

var points = new ;

注意陣列的成員型別必須相同,否則編譯不會通過。

2. 自動屬性

對於簡單的物件屬性,不需要為get和set寫無聊的**了:

public class contact

public int yearofbirth

當然也無須宣告私有成員變數,所有這些事情都交給c#3.0去做吧。

3. 物件初始化器

當建立物件時,需要為物件的成員提供初始值,傳統的做法是在例項化時通過建構函式傳遞初始值或者在例項化後為每個屬性單獨設定值。有了c#3.0,可以這樣做了:

contact c1 = new contact ;

上面**相當於是例項化後給兩個屬性賦值,如果想在例項化的時候給建構函式傳遞引數,那麼可以這樣寫:

contact c1 = new contact("obama");

4. 集合初始化器

不用呼叫add方法了:

list contacts = new list(),

new contact ,

new contact

}5. 匿名型別

建立乙個連型別都不知道的物件,有意思:

var contact1 = new

;注:匿名型別的物件是不可變的,所有的屬性都是唯讀的。

還可以這樣寫:

var name = "test";

var email = "[email protected]";

var contact1 = new ;

這裡的變數名傳到裡面成為了匿名物件的屬性名。直接傳直接量是不允許的,必須使用識別符號。

6. lambda表示式

這是對委託的進一步簡化。在c#1.x時代,建立委託物件要這樣寫:

button1.click += new eventhandler(button1_click);

… private void button1_click(object sender, eventargs e)

在c#2.0可以使用匿名方法進行簡化:

button1.click += delegate ;

c#3.0提供了更簡單的寫法,即使用lambda表示式,寫法如下:

button1.click += (sender, args)=> …;

lamdba表示式的格式很奇怪:

引數=>語句

在上例中,sender和args是lambda表示式的引數,引數的型別是不強制的,可以省略,它可以基於上下文自動推測出來。

C 3 0中的新特性(1)

1.隱式型別 以前這樣宣告變數 string str hello world 現在可以寫成 var str hello world str仍然被認為是string型別,因為c 編譯器根據初始值可以判斷出來。所以這種寫法要求在宣告變數時必須提供初始值。下面是陣列的寫法 var points new 注...

C 3 0 新特性概覽

自從看了scottgu的幾篇文章後就有想讓c 3.0的一些新特性在我的部落格上也留下歷史地一頁。但是由於環境不允許好久都沒有用上.net 3.0,今天終於忍不住地要動一動鍵盤滿足一下自己的慾望,因為我自己的電腦上安裝了.net 3.0 framework sdk。在這裡我總結一下前輩們的研究成果,也...

C 3 0 新特性概覽

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