亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

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

2020-01-24 02:15:27
字體:
來源:轉載
供稿:網友

本文實例分析了c#中Empty()和DefalutIfEmpty()用法。分享給大家供大家參考。具體分析如下:

在項目中,當我們想獲取IEnumerable<T>集合的時候,這個集合有可能是null。但通常的做法是返回一個空的集合。

假設有這樣一個場景:當商店不營業時,返回一個空的IEnumerable<Product>,而當商店正常營業時,就返回一個非空的IEnumerable<Product>。

Product模型。

復制代碼 代碼如下:
public class Product
{
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
}

該商店有一個ProductService類,該類根據屬bool類型屬性IsClosed來決定是否返回空的IEnumerable<Product>。

復制代碼 代碼如下:
public class ProductService
{
        public bool IsClosed { get; set; }

        private static IEnumerable<Product> GetAllProducts()
        {
            return new List<Product>()
            {
                new Product(){Id = 1, Name = "Product1", Price = 85M},
                new Product(){Id = 2, Name = "Product2", Price = 90M}
            };
        }

        public IEnumerable<Product> ShowProducts()
        {
            if (!IsClosed)
            {
                return GetAllProducts();
            }
            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)
    {
 return GetAllProducts();
    }
    return Enumerable.Empty<Product>();
}

輸出結果:今天不營業~~

如果在不營業的時候,我們還是想展示一些產品,比如把產品放在迎街玻璃櫥窗中展示,如何做到呢?

--這時,我們可以考慮使用Enumerable類的靜態類方法DefaultIfEmpty()。

繼續修改ProductService,添加一個返回默認IEnumerable<Product>的方法:

復制代碼 代碼如下:
private static IEnumerable<Product> GetDefaultProducts()
{
    return new List<Product>()
    {
 new Product(){Id = 1, Name = "Product1", Price = 85M}
    };
}

修改ProductService的ShowProducts()方法如下:

復制代碼 代碼如下:
public IEnumerable<Product> ShowProducts()
{
    if (!IsClosed)
    {
 return GetAllProducts();
    }
    return Enumerable.DefaultIfEmpty(GetDefaultProducts());
}

總結:

Empty<T>和DefaultIfEmpty(IEnumerable<T>)都是Enumerable類的靜態方法,給出了當返回的集合類型為空時的處理方法:

● 如果想獲取一個空的集合,使用Enumerable.Empty<T>()
● 如果想給獲取到的、空的集合一個默認值,使用Enumerable.DefaultIfEmpty(IEnumerable<T>)

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品丝袜一区二区三区| 久久精品91久久香蕉加勒比| 北条麻妃99精品青青久久| 欧美性猛交xxxx| 亚州国产精品久久久| 成人国产精品免费视频| 亚洲图片欧美日产| www国产91| 不卡av在线网站| 久久精品久久久久电影| 国产小视频国产精品| 久久99久国产精品黄毛片入口| 日韩中文字在线| 久久久视频免费观看| 中文日韩电影网站| 日韩av中文字幕在线播放| 欧美成aaa人片在线观看蜜臀| 日韩精品视频在线观看免费| 精品香蕉一区二区三区| 国产综合久久久久久| 国产综合福利在线| 国产成人精品午夜| 国产美女精品免费电影| 亚洲乱码一区av黑人高潮| 亚洲一级免费视频| 最近中文字幕mv在线一区二区三区四区| 色综合天天狠天天透天天伊人| 亚洲免费高清视频| 亚洲美女黄色片| 日本亚洲欧美成人| 久久精品久久久久久国产 免费| 日韩视频免费大全中文字幕| 久久97久久97精品免视看| 国产精品高潮呻吟久久av无限| 欧美肥婆姓交大片| 精品美女永久免费视频| 精品久久久久久久久久久久久| 国产欧美日韩精品专区| 成人写真福利网| 日韩中文字幕在线看| 精品久久久久久久久久国产| 在线中文字幕日韩| 欧美专区国产专区| 91亚洲va在线va天堂va国| 欧美日韩亚洲一区二区三区| 国产精品自拍小视频| 狠狠躁夜夜躁人人爽超碰91| 久久久久久国产免费| 91久久精品美女高潮| 成人免费自拍视频| 亚洲天堂免费观看| 亚洲伊人久久大香线蕉av| 中文字幕精品影院| 欧美多人乱p欧美4p久久| 成人中心免费视频| 欧美一级成年大片在线观看| 国产成人jvid在线播放| 69**夜色精品国产69乱| 久久久成人精品| 亚洲精品国产suv| 国产精品成人一区| 欧美激情xxxx| 国产日韩一区在线| 波霸ol色综合久久| 亚洲最大的免费| 欧美老妇交乱视频| 57pao成人永久免费视频| 欧美怡红院视频一区二区三区| 国产精品日韩精品| 欧美最近摘花xxxx摘花| 久久久久久高潮国产精品视| 国内精品模特av私拍在线观看| 久久国产精品久久久| 亚洲丝袜av一区| 久久免费高清视频| 日韩欧美精品网址| 美女视频黄免费的亚洲男人天堂| 日本在线观看天堂男亚洲| 亚洲理论在线a中文字幕| 国产精品毛片a∨一区二区三区|国| 蜜臀久久99精品久久久无需会员| 日本高清视频精品| 97精品视频在线观看| 2019亚洲日韩新视频| 欧美激情性做爰免费视频| 欧美激情videoshd| 91精品国产777在线观看| 在线性视频日韩欧美| 亚洲xxx自由成熟| 久久久av一区| 最近2019中文字幕在线高清| 亚洲高清一二三区| 久久精品2019中文字幕| 国产精品普通话| 午夜精品久久久久久久男人的天堂| 精品久久香蕉国产线看观看亚洲| 亚洲第一中文字幕在线观看| 在线播放日韩专区| 91免费高清视频| 国产精品看片资源| 国产午夜精品全部视频在线播放| 97精品一区二区视频在线观看| 欧美极品第一页| 欧美激情乱人伦一区| 精品视频—区二区三区免费| 日韩精品免费一线在线观看| 久久夜色精品国产| 国产偷国产偷亚洲清高网站| 日本aⅴ大伊香蕉精品视频| 日本高清视频精品| 97超级碰碰碰| 亚洲视频在线免费观看| 国产精品高精视频免费| 久久久精品视频在线观看| 95av在线视频| 亚洲精品色婷婷福利天堂| 欧美性生活大片免费观看网址| 亚洲欧美日韩国产成人| 亚洲成av人片在线观看香蕉| 欧美影院成年免费版| 亚洲第一福利网站| 国产99视频精品免视看7| 久久人人97超碰精品888| 国产日本欧美一区二区三区在线| 亚洲加勒比久久88色综合| 日韩大片在线观看视频| 欧美激情免费观看| 欧美成aaa人片在线观看蜜臀| 国产在线98福利播放视频| 在线国产精品视频| 欧美大奶子在线| 在线观看视频亚洲| 红桃视频成人在线观看| 久久精品人人做人人爽| 成人黄色免费在线观看| 欧美性猛交xxxx免费看| 日韩中文在线中文网在线观看| 国产视频久久久| 一本一本久久a久久精品牛牛影视| 欧美激情乱人伦一区| 中文字幕精品久久| 亚洲精品国精品久久99热| 亚洲综合中文字幕68页| 亚洲一区二区在线| 亚洲精选在线观看| 日韩精品久久久久久久玫瑰园| 欧美成人全部免费| 欧美日韩国产中字| 亚洲人成网站777色婷婷| 国内自拍欧美激情| 亚洲第一精品夜夜躁人人躁| 亚洲美女中文字幕| 91香蕉嫩草影院入口| 中文字幕一区电影| 91久久精品国产| 国产精品久久久久秋霞鲁丝| 亚洲无亚洲人成网站77777| 欧美天堂在线观看| 久久精品电影一区二区| www.99久久热国产日韩欧美.com| 国模吧一区二区| 日韩欧美在线播放| 久久精品国产亚洲| 国外成人在线播放|