C# List常识之经常被忽略的常识

  最近在接收前辈的代码,越来越会发现有很多.net已经封装好的方法可以使用,我们却不知道,然后自己去For/Foreach循环解决自己的需求问题

  总的来说:当下很忧伤啊。总结了几个经常需要用却不知道的方法,如下:

1.Range-AddRange/InsertRange

  需求:对ListA进行添加ListB的内容

                ///经常见到的 循环添加
                foreach (Point item in ListB)
                {
                    this.ListA.Add(item);
                }
                ///AddRange方法
                this.this.ListA.AddRange(ListB);
                ///InsertRange方法
                this.this.ListA.InsertRange(2, ListB);

2.获取Item的属性最大值

  需求:获得List列表中属性最大值的元素

           ///经常看到的
            id = 1;
            foreach (Point p in this.Points)
            {
                if (p.Id > id)
                {
                    id = p.Id;
                }
            }
            var maxValue = Points.FirstOrDefault(p => p.Id == id);
           ///Max方法
            var maxValue = Points.Max(x => x.Id);

3.Converter方法

  需求:List<ClassA>转换为List<ClassB>

           ///常见的
            var ListA = new List<Point>();
            var ListB = new List<Rect>();
            foreach (var item in ListA)
            {
                var itemb = new Rect();
                itemb.X = item.X;
                itemb.Y = item.Y;
                ListB.Add(itemb);
            }
            ///Converter方法
            Converter<Point, Rect> converter = delegate (Point point)
            {
                return new Rect { X = point.X, Y = point.Y };
            };
            ListB = ListA.ConvertAll<Rect>(converter);

4.找时间翻翻List源码拿出来看看,先挖个坑

猜你喜欢

转载自www.cnblogs.com/Khan-Sadas/p/10045367.html