Count 表示获取一个int类型的的数量值,LongCount表示获取一个long类型的数量值。通常情况下两者返回的结果是一致的,但是如果列表中元素的数量超过了int允许的最大返回直接使用 Count获取将会出现数据溢出的问题,这时候就需要LongCount了。
访问元素/修改元素
C#的列表操作单个元素很简单 ,与数组的操作方式完全一样。
string str = list1[0];//获取 list1 的第一个元素,即下标为0的元素list1[2] = "233"; // 将 list1 的第三个元素设置为“233” ,即下标为2 的元素,这里假设list1有至少三个元素
```
需要注意的地方是,如果给定的下标超过了List对象的索引值范围会报ArgumentOutOfRangeException。判断方法就是 下标>= Count,如果满足就会越界。
3. Add或AddRange 添加到列表最后
Insert(int index, T item)或InsertRange(int index,IEnumerable<T> items) 插入
Insert(int index,T item) 在 index 下标处插入一个元素,该下标以及该下标以后的元素依次后移
InsertRange(int index,IEnumerable<T> items) 在index下标处插入一组元素,该下标以及之后的元素依次后移
示例:
List<int> arr1 = new List<int>{1, 9, 28, 5, 3, 6, 0, 12, 44, 98, 4, 2, 13, 18, 81, 92}; arr1.Insert(3,37);// arr1 = 1,9,28,37,5,3,6,0,12,44,98,4,2,13,18,81,92 下标为3的元素变成了37,之后的元素依次后移了 List<int> arr1 = new List<int>{1, 9, 28, 5, 3, 6, 0, 12, 44, 98, 4, 2, 13, 18, 81, 92}; List<int> arr2 = new List<int>{2,3,4,5}; arr1.InsertRange(2,arr2);//arr1= 1,9,2,3,4,5,28,5,3,6,0,12,44,98,4,2,13,18,81,92 可以明显发现下标为2的元素发生了变化
Contains(T item) 是否包含
返回一个Boolean类型的结果,如果包含则返回true,如果不包含则返回false
Remove(T item) 删除指定元素
List<int> arr2 = new List<int>{2,3,4,5}; arr2.Remove(3);// arr2 = 2,4,5 arr2.Remove(6);//arr2 = 2,4,5值得注意的是,如果删除一个不存在的元素时,不会报错,列表也不会发生任何改变。
RemoveAt(int index) 删除位于下标的元素
List<int> arr2 = new List<int>{2,3,4,5}; arr2.RemoveAt(1);//arr2 = 2,4,5如果移除的下标超过了列表的最后一个元素的下标将会抛出异常
RemoveRane(IEnumerable<T> items) 删除一组元素
与Remove(T item)一致,如果要删除的元素不在列表中,则列表元素不会发生变化。
List<int> arr1 = new List<int>{1, 9, 28, 5, 3, 6, 0, 12, 44, 98, 4, 2, 13, 18, 81, 92}; List<int> arr2 = new List<int>{2,3,4,5}; arr1.RemoveRange(arr2);
GetRange(int index,int count)
从列表中获取一个子列表,从index开始,获取count个元素,如果源列表中从index开始剩余的元素不足count个将会报错。
1.2.3 不常用但有用的方法
Clear()删除所有元素
将列表清空,调用方法之后,列表中将不包含任何元素
Reverse() 调转顺序
将列表按照从尾到头的顺序进行排列
IndexOf(T item) 查找下标
查找元素在列表中的下标,如果没找到元素,则返回-1
Sort()排序
对列表进行排序,调用方法后,会按照默认排序方法返回一个排序结果
1.3 Set 集合C#没有为Set单独设置类,一方面是因为Set出镜率不高,另一方面也因为Set本身的机制所致。Set集合不能包含重复元素,如果尝试存入重复元素集合元素将不会发生任何变化。
Set集合中元素的顺序与存放顺序不一定相同。因为Set集合中存放对于使用者而言是乱序存放的。
我们常用的Set集合有 HashSet<T>和SortSet<T>,其他的Set相关类则属于更加少见。至少在我5年多的开发经历中没有用过。
HashSet 俗称 哈希集合或者哈希Set,内部使用Hash值作为元素的唯一性验证,即调用对象的HashCode()方法作为Hash值的来源。
SortSet 顾名思义,排序集合,它每次在插入的时候都会对元素进行一次排序
1.3.2 共同点
初始化
两者相同的地方就是 都有以下几种初始化方法
Set<T> set = new HashSet<T>();// = new SortSet<T>(); 初始化一个空的集合 //使用一个集合对象初始化 Set<T> set1 = new HashSet<T>(IEnumerable<T> items);// = new SortSet<T>(IEnumerable<T> items); Set<T> set2 = new HashSet<T>(){T t1, T t2, T t3};// 与上一种一样
添加元素
set1.Add(item);// 集合只支持添加单个元素,但是可以通过集合运算的方式增加多个元素
移除元素
set1.Remove(item);//删除集合中与item判断相等的元素
访问元素