C#中List可谓是使用最广泛的一种数据类型了,使用他来规范数据时,往往会涉及到对数据的处理操作,相关处理数据方法也非常丰富,本文将简单介绍为何使用它,以及部分处理方法的
C#中List可谓是使用最广泛的一种数据类型了,使用他来规范数据时,往往会涉及到对数据的处理操作,相关处理数据方法也非常丰富,本文将简单介绍为何使用它,以及部分处理方法的灵活使用。 为什么选择使用List,而不是使用Array,或者ArryList首先要说下数组的局限性 (1) 数组中元素是固定的:类型和数量都必须确定!一旦定义,无法改变其元素总数 而List跟数组比较,他可以动态增减元素个数,无任何限制,直接秒杀数组 当然,实际项目开发中,对于一些固定的枚举值,类型集合等,或相关数据处理中,使用数组还是相当方便的,它并不是没用的,而是相比较List,使用的空间小一些罢了(存在即有用!) 然后再说下ArryList 这个直接截图一下官网的相关建议 既然官网都不建议使用,那可见它真的不常用,而不是不能用 跟List比较,他还是有一个优点的,就是他可以存储类型不一样的对象数据,而List泛型集合类,其中T必须是对他存储元素对象的约束,必须一致性! ArrayList存储的对象如果是值类型,那就涉及到装箱操作,这个对程序性能影响很大,所以不到万不得已,还是不要用! 而且ArrayList里面存放元素对象类型都不一致,在C#(强类型语言)中处理时,还需要判断,还要涉及到频繁装箱拆箱,性能不说,这不是自讨苦吃嘛....
List特点:只能添加一种数据类型,可以是基本的值类型也可以实引用类型,一旦数据类型确定,不可更改! List做数据处理时,完全可以采用强大的Linq,处理起来那是相当的方便\ 去重、交集、并集、差集操作注:这里仅介绍当List中T为引用类型(对象)时,基本类型(值类型)就不说了,因为可以直接用!....引用类型则不行! 另外还一个类型比较特殊,也要单独拿出来提一嘴,就是string,在C#中它属于引用类型,但是它类似于值类型,可以直接进行比较,在这完全可以归属到值类型当中了。
那么为什么引用类型不能直接比较呢,其实稍微懂一点底层的都知道,引用类型,引用两个字就道出了缘由!其值为一个引用地址,在栈内存中,地址是唯一的,但是也有可能两个地址指向同一个堆中的值呢.... 重写Equals() 和 GetHashCode()为什么要重新呢,因为这些比较方法的内部就是调用者两个方法进行比较的,他们仅适用于值类型的比较,对象需要重写内部逻辑了! 要想重写,需要写一个类,继承IEqualityComparer接口即可
其实上面写法还是有点不严谨 把(1)加进去重新写一遍
简单使用
|
2022-05-13
2022-03-10
2021-07-02
2021-08-14
2021-05-17