c# contains方法_C# 基础知识系列- 3 集合数组

简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案。比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多、很乱。我们对照集合的概念对仓库进行管理的话,那么 数组就是将一堆货整整齐齐的码在仓库的某个地方,普通列表也是如此;Set就是在仓库里有这么一个货架,每种货品只能放一个,一旦某种货品超过一个了货架就塌了;Dictionary字典呢,在一个货架上随机摆放,然后再找一个本子把每个货品存放的位置记录下来。

1. 主要集合

C#/.NET Framework 提供了很多很有意思的集合类,数组、列表、链表、Set、字典等一系列的类。其中数组是语言的一部分,个人认为严格意义上不属于集合类这一部分。C#开发中常用的集合有数组、 List类、Set接口、Dictionary类、Queue类、LinkedList类等,其他的出镜率不高。 与其他(java)语言不同的一点是,C#的List是类,而不是接口,接口是IList,但这个接口意义不大,在使用IList的时候更多的倾向于使用IEnumerable,这主要是因为IEnumerable 有 Linq的支持再者两者的方法基本一致,能用IList的地方基本都可以用IEnumerable。

1.1 Array 数组

数组,集合的基础部分,主要特点是一经初始化就无法再次对数组本身进行增删元素。C#虽然添加了一些修改数组的扩展方法,但基本都会返回新的数组对象。

1.1.1 初始化

数组的初始化需要指定大小,可以显示指定或者隐式的指定。

// 显示指定类型与大小,具体的元素后续赋值string[] strArr = new string[10]; //指定类型同时给元素赋值,具体大小由编译器自动推断string[] strArr1 = new string[]{"1","2","3","4","5","6","7","8","9","10"};// 类型和大小都由编译器进行推断string[] strArr2 = new []{"1","2","3","4","5","6","7","8","9","10"};

1.1.2 常用方法

  1. 访问和赋值 数组可以通过下标访问数组中的元素,下标从0开始,表示0位。代码如下:
string item0 = strArr[0]; //取出 "1"string item2 = strArr[2]; // 取出 "3"strArr[0] = "3"; // strArr = {"3","2","3","4","5","6","7","8","9","10"}
  1. 获取长度
int length = strArr.Length;// 获取一个整型的长度//获取一个长整型的长度,对于一个非常大的数组且长度可能会超过int的最大值long longLength = strArr.LongLength;
  1. 循环迭代
// 普通for 循环for(int i = 0;i < strArr.Length;i++){    string it = strArr[i];}// foreach 循环foreach(string it in strArr){    // 依次循环,不需要下标,操作更快一点}
1.1.3 不常用但有用的方法
  1. CopyTo 复制到 public void CopyTo(Array array, int index);
    public void CopyTo(Array array, long index);参数说明: array 需要复制到的数组,index 目标数组的起始下标方法说明:将 源数组的元素依次复制到 array从index下标开始的位置 string[] strArr1 = new string[]{"1","2","3","4","5","6","7","8","9","10"};
    string[] strArr3 = new string[10];
    strArr1.CopyTo(strArr3, 0); //strArr3 = {"1","2","3","4",'5","6","7","8","9","10"}值得注意的是strArr3的长度不能 小于 index + strArr1.Length
  2. Sort 排序这个方法不是数组对象的方法,而是 Array 提供的一个静态方法。 int[] arr1 = new[] {1, 9, 28, 5, 3, 6, 0, 12, 44, 98, 4, 2, 13, 18, 81, 92};
    Array.Sort(arr1);//0,1,2,3,4,5,6,9,12,13,18,28,44,81,92,98值得注意的是,该方法是直接对数组进行操作,所以不会返回新的数组。
  3. ToList 转成 List顾名思义,将Array对象转成List对象。这里需要额外注意的是,转换成的List是不可改变长度的
  4. Clone() 获得一个浅拷贝的数组对象获取该对象的一个浅拷贝数组对象。

至于其他的Array类和Array对象 还有很多有意思的方法,但是平时开发的时候使用的频率比较低。这里就不一一介绍了,以后需要会介绍一下的。

1.2 List 列表

List列表为一个泛型类,泛型表示,其中T表示列表中存放的元素类型,T代表C#中可实例化的类型。关于泛型的具体描述以后介绍,现在回过头来继续介绍列表。列表内部持有一个数组对象,列表有两个私有变量:一个是列表容量,即内部数组的大小;另一个是存放的元素数量,通过Count获取。 List列表通过元素数量实现了Add和Remove 的操作,列表对象操作引发元素数量变动时都会导致对容量的重新计算,如果现有容量不满足后续操作需要的话,将会对现有数组进行扩充。

1.2.1 初始化

List list = new List();// 初始化一个空的列表List list1 = new List{"12", "2"};//初始化一个包含两个元素的列表list1 = new List(100);//初始化一个空的列表,并指定list的初始容量为100list = new List(list1);// 使用一个List/Array 初始化一个列表

1.2.2 常用方法

  1. Count 或LongCount获取元素的数量Count 表示获取一个int类型的的数量值,LongCount表示获取一个long类型的数量值。通常情况下两者返回的结果是一致的,但是如果列表中元素的数量超过了int允许的最大返回直接使用 Count获取将会出现数据溢出的问题,这时候就需要LongCount了。
  2. 访问元素/修改元素C#的列表操作单个元素很简单 ,与数组的操作方式完全一样。 string str = list1[0];//获取 list1 的第一个元素,即下标为0的元素
    list1[2] = "233"; // 将 list1 的第三个元素设置为“233” ,即下标为2 的元素,这里假设list1有至少三个元素需要注意的地方是,如果给定的下标超过了List对象的索引值范围会报ArgumentOutOfRangeException。判断方法就是 下标>= Count,如果满足就会越界。
  3. Add或AddRange 添加到列表最后将元素添加到List的末尾,Add添加一个,AddRange添加一组,支持数组、列表。 List list = new List();// 初始化一个空的列表
    list.Add("12");//list = {"12"}
    List list1 = new List{"14", "2"};
    list.AddRange(list1);// list = {"12","14","2"}
  4. Insert(int index, T item)或InsertRange(int index,IEnumerable items) 插入
  5. Insert(int index,T item) 在 index 下标处插入一个元素,该下标以及该下标以后的元素依次后移
  6. InsertRange(int index,IEnumerable items) 在index下标处插入一组元素,该下标以及之后的元素依次后移示例:List arr1 = new List{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 arr1 = new List{1, 9, 28, 5, 3, 6, 0, 12, 44, 98, 4, 2, 13, 18, 81, 92};
    List arr2 = new List{2,3,4,5};
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值