建構函式和屬性初始化

2022-01-19 21:04:05 字數 1233 閱讀 8295

屬性值的賦值應該在類的建構函式之前還是之後執行?

public class testclass 

= 2;

public testclass()

if (testproperty == 2)

}}var testinstance = new testclass() ;

在上面的示例中,testproperty值在類的建構函式中或在類建構函式之後是1嗎?

在例項建立中分配屬性值,如下所示:

var testinstance = new testclass() ;
將在建構函式執行後執行。但是,在c#6.0的類'屬性中初始化屬性值,如下所示:

public class testclass 

= 2;

public testclass()

}

將在建構函式執行之前完成。

將上述兩個概念結合在乙個示例中:

public class testclass 

= 2;

public testclass()

if (testproperty == 2)

}}static void main(string args)

; console.writeline(testinstance.testproperty); //resulting in 1

}

最後結果:

"or shall this be executed"

"1"

說明:

首先將testproperty值指定為2,然後執行testclass建構函式,從而列印出

"or shall this be executed"
然後由於new testclass()testproperty將被指定為1,使得console.writeline(testinstance.testproperty)列印的testproperty的最終值為

"1"

建構函式初始化列表和初始化函式

其實並沒有所謂的初始化函式的概念,本文中的初始化函式只是說明在函式體內進行賦值。而初始化列表才是真正意義上的物件初始化。使用初始化列表效率會高一點。c 規定,物件的成員變數的初始化動作發生在進入建構函式本體之前。在建構函式體內只是賦值,並不是初始化。請看下面這個栗子 class base publi...

初始化列表和建構函式

const的資料成員和需要用初始化列表,不能用普通的建構函式體內部進行初始化,這稱為常資料成員。const 有常引用,常物件,常資料成員,常成員函式 棧區 記憶體由系統來分配和釋放 堆區 記憶體由程式設計師自己來分配和釋放的 全域性區常量區 區 方法 建構函式與類同名 建構函式沒有返回值 建構函式可...

建構函式和初始化表

1.無參構造 預設建構函式 無參並非嚴格的沒有引數的建構函式,而是不需要提供實際引數的建構函式,比如存在有預設引數 integer integer int a 10 也算是預設建構函式,可以無參呼叫。integer p1 new integer integer p2 new integer inte...