C#中加入的對象構造者特性使得對象的初始化工作變得格外簡單我們可以采用類似於數組初始化的方式來初始化類的對象方法就是直接在創建類對象的表達式後面跟上類成員的初始化代碼
以前我們在聲明數組時可以同時對其進行初始化這樣就省去了很多麻煩但是在創建類的對象時這招可就不靈了我們要麼調用該類的構造函數完成對象的初始化要麼就手工進行初始化這兩種方法都不太方便使用構造函數來對對象進行初始化時我們為了某種靈活性可能需要編寫構造函數的多個重載版本實在是麻煩
具體示例如下
以下是引用片段
以下是引用片段
class Point
{
public int X { get; set; }
public int Y { get; set; }
public override string ToString()
{
return ( + XToString() + + YToString() + );
}
}
class Rectangle
{
public Point P { get; set; }
public Point P { get; set; }
public Rectangle()
{
P = new Point();
P = new Point();
}
public override string ToString()
{
return P: + P + P: + P;
}
}
class ObjectBuilder : AppRunnerAbstractApplication
{
public override void Run()
{
Point thePoint = new Point() { X = Y = };
ConsoleWriteLine(Point(X Y) = {} thePoint);
Rectangle theRectangle = new Rectangle() {
P = { X = Y = } P = { X = Y = }
};
ConsoleWriteLine(theRectangle);
}
}
我們在定義Point類的X和Y屬性時只須寫上該屬性的get和set訪問器聲明C#編譯器會自動為我們生成默認的get和set操作代碼當我們需要定義簡單屬性時這個特性非常有用
我們以new Point() { X = Y = }語句輕松的完成了對Point類的初始化工作在創建類的對象時我們可以按照需要去初始化類的對象只要在類的創建表達式後跟上要初始化屬性的列表即可且可以只對需要初始化的屬性賦初值而無需把所有屬性的初始值都寫上去
在theRectangle對象的初始化表達式中我們首先對P屬性進行初始化然而P屬性也是一個自定義的類型所以P屬性的初始化是另一個類型(Point)的初始化表達式我們可以這樣的方式來對更加復雜的類型進行初始化
From:http://tw.wingwit.com/Article/program/net/201311/12621.html