C#的泛型集合有List<T> , Dictionary<键的类型 , 值的类型>
什么是集合?
集合的概念就像是数学中集合的概念,是能够存储多个数据的数据结构,C#中的集合有四个 1、ArrayList ; 2、Hashtable ; 3、List<T> ; 4、Dictionary<键的类型 , 值的类型>; 我们在实际开发中使用到的一般都是后两个的泛型集合.
集合与泛型集合有什么相同之处?
1、ArrayList与List<T>都能够存放多个数据,它们能够根据所需要存储的数据来开辟存储空间,因此不比担心越界问题;
2、Hashtable 与 Dictionary<键的类型 , 值的类型>两个都是键值对集合,都是需要根据键去访问值,存储在里面的元素都是成对出现的,键是唯一的而值可以不唯一;
集合与泛型集合有什么区别?
1、集合ArratList 与 List<T>都使能够存储多个数据但是ArrayList是能够存放多种数据类型的数据而List<T>只能存储泛型T规定的数据类型;
2、同理Hashtable 与 Dictionary<键的类型 , 值的类型>的区别也是一样,后者需要规定存储数据的类型才能够进行存储;
那为什么实际开发中更加倾向使用泛型集合?
因为使用集合会经过需要进行类型转换,而类型转换就涉及到一个装箱和拆箱的过程,一旦发生装箱和拆箱的操作就一定会耗费更多的时间(因此尽量不要发生);
装箱: 就是将值类型转换为引用类型,简单理解: 将值装到箱子里面,返回那个箱子,想找到值就必须找到箱子;
拆箱: 就是将引用类型转换为值类型,简单理解: 将装值的箱子拿走,返回那个值;
(注意: 装箱时使用什么类型,拆箱时也要使用那个类型,不然就会抛异常;)
而泛型集合已经规定好存储的数据类型,所以不必担心会发生装箱和拆箱的操作,因此更加偏向使用泛型集合;
那么要怎么判断是否发生装箱和拆箱呢?
就是观察发生类型转换的两种类型是否存在着继承关系,有继承则有可能发生,无继承则不会发生;
eg: int n = 5; object b = n; //装箱 int a = (int) b; //拆箱 (int类型继承于object类型)
1736

被折叠的 条评论
为什么被折叠?



