|
|
|
|
|
通常,我們有返回集合的方法。我們預先執(zhí)行一些驗證,然后填充集合并返回它。但是,如果不滿足前提條件,我們應該返回什么?
一種選擇是返回null
值:
IEnumerable<Product> GetProductsByCategory(string category)
{
if (string.IsNullOrWhiteSpace(category))
{
return null;
}
var products = _dbContext.Products.Where(p => p.Category == category).ToList();
return products;
}
這通常是一種不好的做法,因為我們現(xiàn)在強制調用代碼檢查結果null
。
更好的方法是只返回一個空集合:
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;
}
雖然這種方法很好,但我們可以使用更簡潔的方法獲得相同的結果:
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
是從方法返回空集合的首選方式,這是因為每次實例化空數(shù)組或列表時,它都存儲在內存中。這增加了垃圾收集器的壓力。但是,當我們使用Array.Empty
或Enumerable.Empty
創(chuàng)建的空集合只有一個實例時,這是可重用的。這將減少我們應用程序的內存消耗。
相關文章