C 3 0之物件與集合初始化

2021-04-13 05:09:56 字數 514 閱讀 2781

我們知道在c#2.0中要初始化乙個物件可以用構造器,或者宣告公有屬性,然後在new乙個物件之後在對屬性賦值。必須一步一步的來,在c#3.0中可以有一種很簡單的方法對物件和集合進行初始化工作。

看個例子:

list

<

int>

num=

newlist

<

int>

... ;

//相當於:icollection.add(t),即num.add(0),...

我們明顯的看到初始化工作又被簡單化了。注意這裡用到的技術仍然是編譯時技術,也就是編譯器會在背後替你做好多工作。而不是執行時的技術。

從上面我們可以看出來,乙個物件要想像上面的那種形式初始化,必須滿足幾個條件:首先必須得有公有的無參構造器,否則編譯器就無法new出乙個物件,更別說初始化了。其次在進行賦值的時候,這些屬性必須是共有的。這點就不必解釋了。

如果想看看背後編譯器做了哪些工作,我們可以用ilda**對上面的**進行反彙編,就可以看到背後自動生成的一些東西了。

C 3 0新特徵之建立和初始化集合物件

一 引言 c 3.0中新的物件初始化器是一種簡單的語法特徵 借助於這種特徵,物件的構建和初始化變得非常簡單。假定你有乙個類student,它看起來有如下樣子 public class student 那麼,你可以使用物件初始化器來建立這個類的乙個物件,如下所示 var student1 new st...

C 3 0新特徵之建立和初始化集合物件

一 引言 c 3.0中新的物件初始化器是一種簡單的語法特徵 借助於這種特徵,物件的構建和初始化變得非常簡單。假定你有乙個類student,它看起來有如下樣子 public class student 那麼,你可以使用物件初始化器來建立這個類的乙個物件,如下所示 var student1 new st...

C 3 0新特徵之建立和初始化集合物件

一 引言 c 3.0中新的物件初始化器是一種簡單的語法特徵 借助於這種特徵,物件的構建和初始化變得非常簡單。假定你有乙個類student,它看起來有如下樣子 public class student 那麼,你可以使用物件初始化器來建立這個類的乙個物件,如下所示 var student1 new st...