C# List
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 就可以根据这个值来上下排序