首页 .Net C#泛型、集合

C#泛型、集合

什么是泛型?

泛型是C#2.0版本和公共语言运行库 (CLR) 中的一个非常重要的新功能。泛型就是类型参数化,用于处理的数据类型不固定的情况下,将类型作为参数传入。

使用泛型的好处?

  • 代码复用:我们一套代码可以支持不同的类性。

  • 降低了耦合性:代码逻辑和数据类型之间分离,实现了解耦。

  • 更好的可读性:我们在使用集合的时候,定义了一个list 如List<String>,一看便知道这个一个存放String类型的list。

  • 程序性能提高:在一定的程度上减少了类型转换装箱与拆箱操作带来的性能损耗。

泛型使用where约束的原因是什么?

约束指定类型参数的功能和预期。

五大集合类

Dictionary<TKey,TValue>

表示基于键进行组织的键/值对的集合。

List<T>

表示可按索引访问的对象的列表。 提供用于对列表进行搜索、排序和修改的方法。

Queue<T>

表示对象的先进先出 (FIFO) 集合。

SortedList<TKey,TValue>

表示基于相关的 IComparer<T>

实现按键进行排序的键/值对的集合。

Stack<T>

表示对象的后进先出 (LIFO) 集合。

C#List是什么?

  • 是一组连续的数据集合

  • 支持泛型List<T>

  • 支持排序,分组,复杂查询,过滤等相关操作

C#Dictionary和List比较

Dictionary字典:

命名空间:System.Collection.Generic
1、Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
2、键必须是唯一的,而值不需要唯一的
3、键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
4、通过一个键读取一个值的时间是接近O(1)
5、键值对之间的偏序可以不定义

List集合:

命名空间:System.Collections.Generic

1、支持复杂查询操作

2、集合中的数据是有序的

C#下Hashtable和Dictionary区别

1、Dictionary<K,V>在使用中是顺序存储的,而Hashtable由于使用的是哈希算法进行数据存储,是无序的。

2、Dictionary的key和value是泛型存储,Hashtable的key和value都是object。

3、Dictionary是泛型存储,不需要进行类型转换,Hashtable由于使用object,在存储或者读取值时都需要进行类型转换,所以比较耗时。

4、单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分。多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减。

5、在通过代码测试的时候发现key是整数型Dictionary的效率比Hashtable快,如果key是字符串型,Dictionary的效率没有Hash


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。