通常我發現我有空引用錯誤,導致我忘了初始化類中的集合屬性。有沒有辦法自動做到這一點,而不使用建築師。我們可以初始化集合屬性,當我們在類中聲明它
1
A
回答
4
private List<string> _names = new List<string>();
public List<string> Names
{
get {return _names;}
set {_names = value;}
}
如果您想直接使用
public List<string> Names { get; set; }
,我除了用構造不知道。
1
方式一:
List<string> myList = new List<string>();
1
public class Foo {
List<int> list = new List<int>();
// details elided
}
現在list
是永遠當你的任何實例方法正在執行null
。
1
他被問到沒有構造函數,所以我認爲答案是否定的 - 我正在想象他可能正在尋找你(不正確)感知堆棧中聲明的C++類與堆 - 你delcare變量的方式在堆棧中給出了這樣的錯覺,即當你將它看作沒有指針和對象引用的語言時,構造函數不會被調用。
我是新來依賴注入,所以我不確定,但也許可以這樣做的東西,有效地自動裝配所有的集合?
編輯:但真的 - 爲什麼?寫幾個單元測試來聲明沒有空值或什麼。遺忘構造成員變量讓我覺得「我需要爲自己做的事情和我想要的方式」做得很低圖騰
1
推遲列表構造的微妙變化 - 對於涉及WCF的一些場景很有用(它無需反序列化回調跳過這兩個構造和字段初始):
public class MyType
{
private List<string> items;
public List<string> Items { get {
return items ?? (items = new List<string>()); } }
}
相關問題
- 1. 我們可以聲明和初始化一個成員變量在同一類
- 2. 我們可以通過它的順序獲取Groovy類的聲明屬性嗎?
- 3. 我們可以整合聲納嗎?
- 4. Java - 我們可以從初始化程序中返回嗎?
- 5. 我們是否聲明'jQuery或者我們只是使用它?
- 6. 我可以在html標籤內使用struts標籤來初始化它們的屬性嗎?
- 7. 我們可以計算Spring bean的初始化時間
- 8. 我們可以初始化動態字符串數組
- 9. 我們可以在javascript函數中調用類屬性嗎?
- 10. C++:我們可以收集類型嗎?
- 11. 我們可以在app.config文件中聲明變量
- 12. 我們可以在java中聲明class是'private'嗎?
- 13. 我們可以在QML文件中聲明全局變量嗎?
- 14. 我們可以聲明式設置Web控件的Style屬性嗎?
- 15. 我們可以使用類似JSON的語法使用LINQ初始化對象/集合嗎?
- 16. 我們可以在plpgsql函數的開始 - 結束塊中聲明變量嗎?
- 17. iPhone - 更改實體類(NSManagedObject),使它們可初始化
- 18. 我們可以在我們的AMP
- 19. 我們可以聲明在兩個文件中的一類在vb.net
- 20. 初始化在聲明
- 21. 我們可以在父類中聲明構造函數,並在java中的另一個類中定義它?
- 22. 初始化集合類
- 23. 當我們訪問一個屬性時,我們應該聲明一個局部變量嗎?
- 24. 在使用它們之前聲明屬性 - 最佳實踐?
- 25. decltype(auto),追蹤返回類型和sfinae:我們可以混合它們嗎?
- 26. 未初始化類屬性
- 27. 初始化類屬性
- 28. 爲什麼我們要在普通類中聲明靜態類?
- 29. 我可以啓動空白變量並在之後聲明它們嗎?
- 30. 爲什麼在C#中我們需要初始化原始類型變量?
我猜OP想要這個由編譯器自動完成。 – 2010-11-18 02:26:01
@ icyrock.com,謝謝,我知道,並且正如我所顯示的,編譯器不會這樣做。 – Gabe 2010-11-18 02:32:09