• 将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; }
        }
    }

    什么是泛型缓存和静态构造函数?

  • 相关阅读:
    android binder机制详解
    java 类继承,父类子类方法调用的过程d
    java 类继承,父类子类方法调用的过程
    android 多点触控
    SurfaceView 游戏开发的一些基础知识和注意事项
    android handler异步处理机制详解(线程局部存储(TLS)知识点)
    android 类加载器 DexClassLoader的用法,以及引出的插件架构
    java 基础知识点
    jdk8 lambda表达式list操作分组、过滤、求和、最值、排序、去重
    Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
  • 原文地址:https://www.cnblogs.com/May-day/p/6277369.html
Copyright © 2020-2023  润新知