C#對象初始化學習總結(jié)
C#3.0中加入的對象構(gòu)造者特性,使得C#對象初始化工作變得格外簡單,我們可以采用類似于數(shù)組初始化的方式來初始化類的對象,方法就是直接在創(chuàng)建類對象的表達式后面跟上類成員的初始化代碼。
以前我們在聲明數(shù)組時,可以同時對其進行初始化,這樣就省去了很多麻煩,但是在創(chuàng)建類的對象時,這招可就不靈了,我們要么調(diào)用該類的構(gòu)造函數(shù)完成C#對象初始化,要么就手工進行初始化。這兩種方法都不太方便,使用構(gòu)造函數(shù)來對對象進行初始化時,我們?yōu)榱四撤N靈活性,可能需要編寫構(gòu)造函數(shù)的多個重載版本,實在是麻煩。
具體示例如下:
- classPoint
- {
- publicintX{get;set;}
- publicintY{get;set;}
- publicoverridestringToString()
- {
- return"("+X.ToString()+","+Y.ToString()+")";
- }
- }
- classRectangle
- {
- publicPointP1{get;set;}
- publicPointP2{get;set;}
- publicRectangle()
- {
- P1=newPoint();
- P2=newPoint();
- }
- publicoverridestringToString()
- {
- return"P1:"+P1+",P2:"+P2;
- }
- }
- classObjectBuilder:AppRunner.AbstractApplication
- {
- publicoverridevoidRun()
- {
- PointthePoint=newPoint(){X=1,Y=2};
- Console.WriteLine("Point(X,Y)={0}",thePoint);
- RectangletheRectangle=newRectangle(){
- P1={X=1,Y=1},P2={X=100,Y=200}
- };
- Console.WriteLine(theRectangle);
- }
- }
我們在定義Point類的X和Y屬性時,只須寫上該屬性的get和set訪問器聲明,C#編譯器會自動為我們生成默認的get和set操作代碼,當我們需要定義簡單屬性時,這個特性非常有用。
我們以new Point() { X = 1, Y = 2 }語句,輕松的完成了對Point類的初始化工作。在創(chuàng)建類的對象時,我們可以按照需要去初始化類的對象,只要在類的創(chuàng)建表達式后跟上要初始化屬性的列表即可,且可以只對需要初始化的屬性賦初值,而無需把所有屬性的初始值都寫上去。
在theRectangle對象的初始化表達式中,我們首先對P1屬性進行初始化,然而P1屬性也是一個自定義的類型,所以P1屬性的初始化是另一個類型(Point)的初始化表達式,我們可以這樣的方式來對更加復雜的類型進行初始化。以上介紹C#對象初始化。
【編輯推薦】