C# 集合回傳值:傳回 null 還是空集合?
在寫傳回集合的方法時,常常會遇到一個問題:是傳回 null 還是傳回空集合?在 C# 中,最佳實踐建議始終返回後者。
回傳 null 會帶來潛在問題。依賴該集合的程式碼可能會遇到空檢查和異常,導致意外行為。考慮以下範例:
<code class="language-csharp">if (myInstance.CollectionProperty != null) { foreach (var item in myInstance.CollectionProperty) { /* 此处可能出现问题 */ } }</code>
為了避免這些問題,總是會傳回空集合。這樣可以確保程式碼能夠安全地處理集合,而不管其內容如何。
對於屬性,最好只設定一次,然後保持不變。使用以下模式:
<code class="language-csharp">public List<foo> Foos { get; private set; } public Bar() { Foos = new List<foo>(); }</code>
在 .NET 4.6.1 中,可以簡化為:
<code class="language-csharp">public List<foo> Foos { get; } = new List<foo>();</code>
對於傳回可枚舉類型的方法,您可以輕鬆地傳回空可枚舉類型而不是 null:
<code class="language-csharp">public IEnumerable<foo> GetMyFoos() { return InnerGetFoos() ?? Enumerable.Empty<foo>(); }</code>
使用 Enumerable.Empty<T>()
比傳回明確建立的空集合或陣列更有效。
以上是C# 中傳回集合的方法應該傳回 Null 還是空集合嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!