• C#


     Ilist / List

     IList:首先IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口。

      它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList<T>可以胜任。

      不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。这个时候IList<T>就爱莫能助了。

    1、当你只想使用接口的方法时,ILis<>这种方式比较好.他不获取实现这个接口的类的其他方法和字段,有效的节省空间.

    2、IList <>是个接口,定义了一些操作方法这些方法要你自己去实现
    List <>是泛型类,它已经实现了IList <>定义的那些方法

    IList <Class1> IList11 =new List <Class1>();
    List <Class1> List11 =new List <Class1>();

    这两行代码,从操作上来看,实际上都是创建了一个List<Class1>对象的实例,也就是说,他们的操作没有区别。

    只是用于保存这个操作的返回值变量类型不一样而已。

    那么,我们可以这么理解,这两行代码的目的不一样。
    List <Class1> List11 =new List <Class1>();
    是想创建一个List<Class1>,而且需要使用到List<T>的功能,进行相关操作。

    IList <Class1> IList11 =new List <Class1>();
    只是想创建一个基于接口IList<Class1>的对象的实例,只是这个接口是由List<T>实现的。所以它只是希望使用到IList<T>接口规定的功能而已。

     List基础、常用方法
    using System;
    using System.Collections.Generic;
     
    namespace ListStudy
    {
        /// <summary>
        /// 以下没有接收返回值的方法都是属于 void方法
        /// </summary>
        class Program
        {
            static void Main(string[] args)
            {
                List<string> lists = new List<string>();
     
                /* 添加元素 */
                //添加一个元素
                lists.Add("first");
                //添加多个元素
                string[] temArr = { "two", "three" };
                lists.AddRange(temArr);
                //在index位置添加一个元素
                lists.Insert(0, "zero");
                //遍历List中元素
                foreach (string item in lists)
                {
                    Console.Write(item + "/");
                }
                //结果为:zero/first/two/three/
     
                /* 删除元素 */
                //删除一个值
                bool remove = lists.Remove("first1");
                //删除下表为index的元素
                lists.RemoveAt(3);    //超出下标会报异常
                //从下标index开始,删除count个元素
                lists.RemoveRange(2, 1);  //超出下标或者个数超出list长度都会报异常
     
                /* 判断某个元素是否在list中 */
                bool contains = lists.Contains("firsT");//属于精确查找匹配,不是模糊匹配
                Console.WriteLine(contains);
     
                /* 元素排序 */
                lists.Sort();   //默认是元素第一个字母按升序
                //给List里面元素顺序反转
                lists.Reverse();    //注意这个需要与sort一起使用
     
                /* list清空 */
                lists.Clear();
     
                /* list获取元素个数 */
                int count = lists.Count;
     
                /* list lambda表达式 */
                string[] temArr1 = { "zero", "first", "two", "three" };
                lists.AddRange(temArr1);
                string s = lists.Find(name =>
                {
                    if (name.Contains("w"))
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }); //返回第一个模糊匹配的元素
                //以下方法都可以使用这种方式
                //List<string> ss = lists.FindAll();
                //List<string> ss = lists.FindLast();   //返回最后一个模糊匹配的元素
                //bool trueForAll = lists.TrueForAll(); //确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。比如是否每个元素的长度都超过了3
                //IEnumerable<string> takeList=  mList.Take(5); //获得前n行 返回值为IEnumetable<T>,T的类型与List<T>的类型一样
                //IEnumerable<string> ss = lists.Where();  //检索与指定谓词所定义的条件相匹配的所有元素。跟List.FindAll方法类似。
                //int num = lists.RemoveAll();  //移除与指定的谓词所定义的条件相匹配的所有元素。并返回移除的数量
                Console.Write($"s:{s}");
            }
        }
    }

    数组

    using System;
     
    namespace ListStudy
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建数组的几种方法
                //第一种
                string[] myArray = new string[10];
     
                //第二种
                string[] myArray2 = { "first", "two" };
     
                //第三种
                string[] myArray3 = new string[3] { "first", "two", "there" };
     
                //第四种
                string[] myArray4 = new string[] { "first", "two", "there", "four" };
     
                //数组排序
                Array.Sort(myArray4);
            }
        }
    }

    Array类方法

    using System;
     
    namespace ListStudy
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] list = { 34, 72, 13, 44, 25, 30, 10 };
     
                Console.Write("原始数组: ");
                foreach (int i in list)
                {
                    Console.Write(i + " ");
                }
                Console.WriteLine();
     
                // 逆转数组
                Array.Reverse(list);
                Console.Write("逆转数组: ");
                foreach (int i in list)
                {
                    Console.Write(i + " ");
                }
                Console.WriteLine();
     
                // 排序数组
                Array.Sort(list);
                Console.Write("排序数组: ");
                foreach (int i in list)
                {
                    Console.Write(i + " ");
                }
                Console.WriteLine();
     
                int[] list1 = new int[3];
                Array.Copy(list, list1, 3);// 源数组,目标数组, 复制长度
                Console.Write("Copy数组: ");
                foreach (int i in list1)
                {
                    Console.Write(i + " ");
                }
                Console.WriteLine();
     
                int[] list2 = new int[3];
                Array.Copy(list, 3, list2, 0, 3);// 源数组,从源数组第几个下标index开始复制,目标数组, 从目标数组的第几个下表index开始放值, 复制长度
                Console.Write("Copy数组: ");
                foreach (int i in list2)
                {
                    Console.Write(i + " ");
                }
                Console.WriteLine();
     
                Console.ReadKey();
            }
        }
    }

    List 与 数组之间的相互转换

    using System.Collections.Generic;
     
    namespace ListStudy
    {
        class Program
        {
            static void Main(string[] args)
            {
                //数组转List
                string[] temArr1 = { "zero", "first", "two", "three" };
                List<string> lists = new List<string>(temArr1);
     
                //List转数组
                List<int> listss = new List<int>() { 1, 2, 3, 4, 5 };
                int[] temArray2 = listss.ToArray();
            }
        }
    } 
     
  • 相关阅读:
    第一阶段各队建议
    解决死锁四大方式
    进程和线程区别
    windows 地址空间分配
    Linux下用户组、文件权限详解
    2016总结
    class内部处理
    c++ devived object model
    static
    reinterpret
  • 原文地址:https://www.cnblogs.com/djd66/p/15205729.html
Copyright © 2020-2023  润新知