当前位置 : 主页 > 编程语言 > c语言 >

C# List

来源:互联网 收集:自由互联 发布时间:2021-06-25
List List T是list里面的元素类型,编译器会检查你添加进list里的元素类型对不对,不对的话会报错,换句话说,List 是类型安全的 Liststring listOfStrings = new Liststring(); List很像Array(他们俩好

List

List T是list里面的元素类型,编译器会检查你添加进list里的元素类型对不对,不对的话会报错,换句话说,List 是类型安全的
List<string> listOfStrings = new List<string>();
List很像Array(他们俩好像都是通过IList接口来实现的),但是大多数情况下,list比Arrays好用
  比如 不用指定元素个数,随便加,加完以后 .Net会自动帮我们修正个数的,但是要注意添加的item的类型必须是T代表的类型

初始化

同样是用花括号 多元素之间用逗号隔开

上面这个例子和上一节的Arrays 的例子差不多结构,注意 List 的使用


Adding 添加元素
Insert (index,item) 在指定的位置插入元素,原来的元素和后面所有元素 都往后挪一位
AddRange(xxx) xxx可以是任意类型的集合 数组或者list都行(当然元素的数据类型还是得一样,string对string,int对int)
InsertRange(index,xxx)xxx参考上面

Remove(”John”) 从头开始找John,找到就从list里扔掉他,找不到也不报错,返回值TRUE表示扔掉了,FALSE表示没扔掉
RemoveAt(0) 扔掉第一个元素   RemoveAt (listOfNames.Count - 1) 扔掉最后一个元素 。
  这个如果你提供了不正常的index是会报错的,比如负值或者超过长度的索引值,函数没有返回值
  如果要知道成功没成功就得用try catch 去检查Count有没有变化了
RemoveAll() 最复杂也是最强大的remove功能了,他用一个函数的委托delegate 作为参数,在这个函数了我们可以定义自己的remove逻辑,可以一次性的remove多个item
这个例子 逻辑就是移除开头字母是J的item

RomoveAll 用一个 匿名方法 作为参数,这个匿名方法 会应用到每个item,应用的时候参数name其实就是每个item,判断是不是J开头然后返回True False
  根据TRUE or False 来判断是不是要移除这个item

Sort() 排序功能
Reverse() 翻转,头变尾,尾变头

List 和 List 都可以排序,这是 .Net 自带的,自定义的List 如何排序呢?
  使用 IComparable接口 或者 用LINQ 或者根据item性质写一个比较函数(Sort 也可以接受一个比较函数的委托 )

这里的 CompareUser 就是个比较函数。我感觉和上面的Remove 的委托函数参数类似
比较两个数的大小,返回值 smaller same bigger (-1 0 1)然后sort 就可以根据这个值来上下排序

?
网友评论