一個類的對象叫實例,得到一個對象就叫做實例化。有些變量在定義的時候要加上New進行實例化,有些變量在定義的時候不加New進行實例化,例如:Dim EnCard asnew CardInfoEntity 與 Dim dt as Datatable,這是為什麼呢?其實加New就是對其變量進行實例化,為其進行分配空間,而不加New則是只定義變量,不為其分配空間。 那麼什麼時候是變量聲明和實例化的時機呢?如下舉例:
<span style="font-size:14px;">namespace Recharge { class Class1 { Class2 class2 = new Class2(); //這是在聲明成員對象的時候同時實例化。 public Class1() { //class2 =new Class2(); //這是在類定義的時候僅聲明成員對象,而在新建類對象實例的時候,再對類內部的對象成員統一實例化。 class2.output(); } } }</span>
<span style="font-size:14px;"> namespace Recharge { class Class2 { int b=22; //這是 在聲明成員變量的時候同時實例化(初始化)。 public Class2() { //b = 22; //這是在成員變量定義的時候僅聲明,而在新建類對象實例的時候, //再通過類的構造函數對類內部的成員統一初始化。 } public void output() { Console.WriteLine(b.ToString()); } } }</span>
聲明和實例化(初始化)是不同的動作,處於概念上的清晰,推薦把二者分開。在微軟自動生成的代碼中,都是通過在類的構造函數中調用一個privatevoid InitializeComponent()函數來對類的成員進行實例化(初始化),而在類中僅對成員進行聲明,雖然在類定義聲明變量的時候,可以在語法上對其進行實例化,但這顯然不是一種概念清晰的做法。類的所有成員實例都是在類的實例被創建時才被創建的,推薦在程序的書寫上也體現出這種規則。