首頁 >後端開發 >C++ >C# 中傳回集合的方法應該傳回 Null 還是空集合嗎?

C# 中傳回集合的方法應該傳回 Null 還是空集合嗎?

Patricia Arquette
Patricia Arquette原創
2025-01-25 15:06:11892瀏覽

Should Collection-Returning Methods Return Null or an Empty Collection in C#?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn