1. 程式人生 > >C# List常識之經常被忽略的常識

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原始碼拿出來看看,先挖個坑