將List 中的ConvertAll的使用:List 中的元素轉換,List模型轉換, list模型轉數組


一,我們了解下,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; }
    }
}

 

什么是泛型緩存和靜態構造函數?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM