程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 關於C#3.0 新特性之對象構造者

關於C#3.0 新特性之對象構造者

編輯:C#基礎知識

  C#3.0中加入的對象構造者特性,使得對象的初始化工作變得格外簡單,我們可以采用類似於數組初始化的方式來初始化類的對象,方法就是直接在創建類對象的表達式後面跟上類成員的初始化代碼。

  以前我們在聲明數組時,可以同時對其進行初始化,這樣就省去了很多麻煩,但是在創建類的對象時,這招可就不靈了,我們要麼調用該類的構造函數完成對象的初始化,要麼就手工進行初始化。這兩種方法都不太方便,使用構造函數來對對象進行初始化時,我們為了某種靈活性,可能需要編寫構造函數的多個重載版本,實在是麻煩。

具體示例如下:

以下是引用片段:
   class Point
   {
   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 ObjectBuilder : AppRunner.AbstractApplication
   {
   public override void Run()
   {
   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)的初始化表達式,我們可以這樣的方式來對更加復雜的類型進行初始化。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved