一,我們了解下,list的工作原理
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ListDemo { class Program { static void Main(string[] args) { //list:原理也是數組機制,集合的容量 List<int> il = new List<int>(); Console.WriteLine(il.Capacity); // 在初始化是容量默認為0 for (int i = 0; i < 4; i++) { il.Add(i); } Console.WriteLine(il.Capacity); // 當第一次賦值的,容量為4 for (int i = 0; i < 1; i++) { il.Add(i); } Console.WriteLine(il.Capacity); // 當超越4時的,容量為4*2,以后以此類推 //list:原理也是數組機制,當在一開始賦值容量,超過則是根據你賦值的乘以2來增加容量 //這如果在初始化給List確定的容量,而不會出現容量增加,數組賦值到另一個數組的情況,適當list效率 List<int> il2 = new List<int>(3); for (int i = 0; i < 5; i++) { il2.Add(i); } Console.WriteLine(il2.Capacity); // //輸出6 il2.Sort(); Console.ReadKey(); } } }
綜上總結:
1》List原理也是數組機制
2》List在初始化是容量默認為0,第一次擴容默認增加4,以后均已乘以2增長,在容量增加的同時,將就得數組數據復制到新的數組
3》你也可以在構造給list賦初始值,當在一開始賦值容量,超過則是根據你賦值的乘以2(3*2=6)來增加容量
4》如果在初始化給List確定的容量,而不會出現容量增加,舊數組復制值到另新數組的情況,提高list效率
二,轉換代碼
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class ListDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //將當前 List 中的元素轉換為另一種類型,並返回包含轉換后的元素的列表 List<string> ls = new List<string>() { "1", "2", "3" }; List<int> li = ls.ConvertAll<int>(i => int.Parse(i)); var li2 = ls.Select(i => int.Parse(i)); //list模型轉換 Test t = new Test(); t.a = 1; t.b = "45"; List<Test> lt = new List<Test>(); lt.Add(t); lt.Add(t); lt.Add(t); List<Test2> lst = lt.ConvertAll(x => new Test2 { c = x.a.ToString(), d = x.b }); //list模型轉數組 var ToSZ = String.Join(",", lt.ConvertAll(u => u.a).ToArray()); //list轉object數組 List<Object> m = lt.ConvertAll(s => (object)s); } public class Test { public int a { get; set; } public string b { get; set; } } public class Test2 { public string c { get; set; } public string d { get; set; } } }