对象构造者
概述:
我們在聲明數組時,可以同時對其進行初始化,這樣就省去了很多麻煩,但是在創建類的對象時,這招可就不靈了,我們要么調用該類的構造函數完成對象的初始化,要么就手工進行初始化。這兩種方法都不太方便,使用構造函數來對對象進行初始化時,我們為了某種靈活性,可能需要編寫構造函數的多個重載版本,實在是麻煩。
C#3.0中加入的對象構造者特性,使得對象的初始化工作變得格外簡單,我們可以采用類似于數組初始化的方式來初始化類的對象,方法就是直接在創建類對象的表達式后面跟上類成員的初始化代碼。
實例代碼:
????{
????????public?int?X?{?get;?set;?}
????????public?int?Y?{?get;?set;?}
????????public?override?string?ToString()
????????{
????????????return?"("?+?X.ToString()?+?",?"?+?Y.ToString()?+?")";
????????}
????}
????class?Rectangle
????{
????????public?Point?P1?{?get;?set;?}
????????public?Point?P2?{?get;?set;?}
????????public?Rectangle()
????????{
????????????P1?=?new?Point();
????????????P2?=?new?Point();
????????}
????????public?override?string?ToString()
????????{
????????????return?"P1:?"?+?P1?+?",?P2:?"?+?P2;
????????}
????}?
????class?ObjectStructurer
????{
????????public?static?void?Main()
????????{
????????????Point?thePoint?=?new?Point()?{?X?=?1,?Y?=?2?};
????????????Console.WriteLine("Point(X,?Y)?=?{0}",?thePoint);
????????????Rectangle?theRectangle?=?new?Rectangle()
????????????{
????????????????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類的初始化工作。在創建類的對象時,我們可以按照需要去初始化類的對象,只要在類的創建表達式后跟上要初始化屬性的列表即可,且可以只對需要初始化的屬性賦初值,而無需把所有屬性的初始值都寫上去。
在theRectangle對象的初始化表達式中,我們首先對P1屬性進行初始化,然而P1屬性也是一個自定義的類型,所以P1屬性的初始化是另一個類型(Point)的初始化表達式,我們可以這樣的方式來對更加復雜的類型進行初始化。
運行結果:
????????
轉載于:https://www.cnblogs.com/abcdwxc/archive/2007/11/21/966790.html
總結
- 上一篇: VS.Net 开发 MSN一样缓慢出来的
- 下一篇: 超大数据量的查询