C# List常識之經常被忽略的常識
阿新 • • 發佈:2018-11-30
最近在接收前輩的程式碼,越來越會發現有很多.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原始碼拿出來看看,先挖個坑