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