在C#中沒有setter的情況下爲屬性初始化對象的最佳方法是什麼?按需或在構造函數中創建屬性對象?
例如,我有類型的UserData的屬性,我可以初始化:
- 在構造
在吸氣
private UserData _user; public UserData User { get { return _user?? (_user= new UserData()); } }
初始化字段:
private UserData _user = new UserData()
我發現幾個similiar主題:
Create an object in the constructor or at top of the class
C# member variable initialization; best practice?
但它是第一個和第三個選項之間的考慮 - 沒人想着第二個選項 - 你知道的方式?從某個時候起,我喜歡獲取對象,但我想知道是否有一些我不知道的缺點。
你能告訴我什麼是最好的選擇,什麼問題可以使用第二個選項?
我會假設第二個選項不是線程安全的。 – Henrik 2012-07-25 14:11:13