我們知道在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...