技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

[C#技巧]C#返回空集合的正確方法是使用Array.Empty而不是null

作者:admin    時(shí)間:2023-5-6 11:57:50    瀏覽:

通常,我們有返回集合的方法。我們預(yù)先執(zhí)行一些驗(yàn)證,然后填充集合并返回它。但是,如果不滿足前提條件,我們應(yīng)該返回什么?

一種選擇是返回null值:

IEnumerable<Product> GetProductsByCategory(string category)
{
    if (string.IsNullOrWhiteSpace(category))
    {
        return null;
    }
    var products = _dbContext.Products.Where(p => p.Category == category).ToList();
    return products;
}

這通常是一種不好的做法,因?yàn)槲覀儸F(xiàn)在強(qiáng)制調(diào)用代碼檢查結(jié)果null

更好的方法是只返回一個(gè)空集合:

IEnumerable<Product> GetProductsByCategory(string category)
{
    if (string.IsNullOrWhiteSpace(category))
    {
        return new List<Product>();
    }
    var products = _dbContext.Products.Where(p => p.Category == category).ToList();
    return products;
}

雖然這種方法很好,但我們可以使用更簡(jiǎn)潔的方法獲得相同的結(jié)果:

IEnumerable<Product> GetProductsByCategory(string category)
{
    if (string.IsNullOrWhiteSpace(category))
    {
        return Enumerable.Empty<Product>();
    }
    var products = _dbContext.Products.Where(p => p.Category == category).ToList();
    return products;
}

使用Array.EmptyEnumerable.Empty是從方法返回空集合的首選方式,這是因?yàn)槊看螌?shí)例化空數(shù)組或列表時(shí),它都存儲(chǔ)在內(nèi)存中。這增加了垃圾收集器的壓力。但是,當(dāng)我們使用Array.EmptyEnumerable.Empty創(chuàng)建的空集合只有一個(gè)實(shí)例時(shí),這是可重用的。這將減少我們應(yīng)用程序的內(nèi)存消耗。

相關(guān)文章

x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */