2013-01-04 19 views
0

當集合屬性(類型爲「IList」或Array)時,它應該在null沒有元素時爲空,或者它應該表示爲空集合(即長度爲零)儘管表示集合屬性的最佳做法沒有項目

例如

public class Teacher 
{ 
    public List<Student> Students = null // to represent absence of items 
} 

OR

public class Teacher 
{ 
    public List<Student> Students = new List<Student>() // Initialize the collection. 
} 

什麼是解決這個問題的最佳實踐。

回答

3

在大多數情況下,這應該是一個空列表。這將簡化您的邏輯,因爲您無需在使用列表的任何地方執行空檢查。

例如,如果你想看看如果列表包含元素「測試」,你可以這樣做:

if (myList.Contains("Test")) 

而是具有寫

if(myList != null && myList.Contains("Test")) 

這也是LINQ爲它的擴展方法做了什麼:如果沒有元素而不是null,則返回一個空的IEnumerable。這對於鏈接這些方法調用當然也很重要。

當然,在某些情況下,您希望列表爲空來指示某些特定的內容,但在大多數情況下,您是通過初始化它來幫助您的。你會看到很少的空指針異常;

0

它們可以有很不同的含義,所以它取決於你(和你的要求)來決定什麼是正確的代碼。

是沒有學生的老師(Students = null)與沒有學生的老師相同(Students.Count == 0)。在數據庫術語中,一列等於一列的值null,另一列等於值0

但是,如果這些案件是等價的,恕我直言相比,這是更好地做

public List<Student> Students = new List<Student>(); 

,因爲當你做的操作,如對物業.Count.Where它不會拋出。

順便說一句,做它的屬性,公共可變集合字段肯定是有趣的調試。

相關問題