c#中Empty()和DefalutIfEmpty()用法分析

2019-12-26 11:46:23王旭

            return new List<Product>(0);
        }
}

 

在客户端,假设我们设置为不营业。

复制代码 class Program
{
        static void Main(string[] args)
        {
            ProductService service = new ProductService();
            service.IsClosed = true;

 

            IEnumerable<Product> products = service.ShowProducts();
            if (products.Count() > 0)
            {
                foreach (var prod in products)
                {
                    Console.WriteLine("产品:{0},价格:{1}",prod.Name, prod.Price);
                }
            }
            else
            {
                Console.WriteLine("今天不营业~~");
            }
            Console.ReadKey();
        }
}

 

输出结果:今天不营业~~

这样做确实没什么问题,但问题是:当通过 new List<Product>(0)返回空的集合时,为其分配了内存。对于一个只读的、空的集合类型,是否可以做到不耗费内存呢?

--答案是使用Enumerable类的静态方法Empty()。

在ProductService的ShowProducts()中修改如下:

复制代码 public IEnumerable<Product> ShowProducts()
{
    if (!IsClosed)