2015-04-02 72 views
0

當前,當設置on對象的成員變量時,我檢查對象是否被實例化。這是非常必要的,還是通過設置一個成員變量來實例化對象?c#通過設置成員值來實例化一個類

Person _Person;  

public int Age 
{ 
    get 
    { 
    return _Person.Age; 
    } 
    set 
    { 
    if (_Person != null) 
     _Person.Age = value; 
    else 
     _Person = new _Person(value); 
    } 
} 

與以下相同嗎?

Person _Person;  

public int Age 
{ 
    get 
    { 
    return _Person.Age; 
    } 
    set 
    { 
    _Person.Age = value; 
    } 
} 
+0

在你的類中你有一個對另一個類('Person')的實例的引用,你公開的屬性作爲你的對象的屬性?那麼是的,你應該首先實例化'_Person',但我相信你要麼在構造函數中這樣做,要麼看繼承。 – GSerg 2015-04-02 10:50:35

+0

你爲什麼不試試? – Rohit 2015-04-02 10:53:38

+0

當你在設置它之前得到Age時,你當前的處理也會拋出一個NullReferenceException - >你應該在getter中做null檢查,或者急切地實例化Person,這意味着你不再需要null檢查 – Icepickle 2015-04-02 10:53:40

回答

1

不,你必須實例化分配變量中的內存。與出實例化所述可變將總是等於null

當一個實例的構造沒有構造初始化,或它具有 形式鹼(...)的一個構造函數的初始化,該構造 隱含地執行的初始化由 在其類中聲明的實例字段的變量初始值設定程序指定。 這對應於在進入構造函數後立即執行 並且在調用直接基類構造函數之前執行的分配序列。

相關問題