之對象與集合初始化覆蓋
發布時間:2021-10-26 07:19:27
我們知道在C#2.0中要初始化一個對象可以用構造器,或者聲明公有屬性,然后在new一個對象之后在對屬性賦值。必須一步一步的來,在C#3.0中可以有一種很簡單的方法對對象和集合進行初始化工作。
看個例子:
publicclassPoint...{
當時我內心從高興變成了發狂 intx,y;
publicintX...{get...{returnx;}set...{x=value;}}
publicintY...{get...{returny;}set...{y=value;}}
}
vara=newPoint...{X=0,Y=1};
//相當于:vara=newPoint();a.X=0;a.Y=1;
//集合初始化器:
Listintnum=newListint...{0,1,2,6,7,8,9};
//相當于:d(T),即d(0),...
我們明顯的看到初始化工作又被簡單化了。注意這里用到的技術仍然是編譯時技術,也就是編譯器會在背后替你做好多工作。而不是運行時的技術。
從上面我們可以看出來,一個對象要想像上面的那種形式初始化,必須滿足幾個條件:首先必須得有公有的無參構造器,否則編譯器就無法new出一個對象,更別說初始化了。其次在進行賦值的時候,這些屬性必須是共有的。這點就不必解釋了。
如果想看看背后編譯器做了哪些工作,我們可以用ILDasm對上面的代碼進行反匯編,就可以看到背后自動生成的一些東西了。
查看本文來源
成都男科西寧白癜風好醫院
綿陽白癜風哪里治療好
猜你會喜歡的
猜你會喜歡的