Effective C# 原则40:根据需求选择集合
2009-02-19 08:17:44 来源:WEB开发网“哪种集合是最好的?”答案是:“视情况而定。” 不同的集合有不同的性能,而且在不同的行为上有不同的优化。.Net框架支持很多类似的集合:链表,数组,队列,栈,以及其它的一些集合。C#支持多维的数组,它的性能与一维的数组和锯齿数组都有所不同。.Net框架同样包含了很多特殊的集合,在你创建你自己的集合类之前,请仔细参阅这些集合。你可以发现很多集合很快,因为所有的集合都实现了ICollection接口。在说明文档中列出了所有实现了ICollection接口的集合,你将近有20多个集合类可用。
为了选择适合你使用的集合,你须要考虑在该集合上使用的操作。为了创建一个有伸缩性的程序,你须要使用一些实现了接口的集合类,这样当你发现某个假设的集合不正确时,你可以用其它不同的集合来代替它(参见原则19)。
.Net框架有三种不同类型的集合:数组,类似数组的集合,以及基于散列值的集合。数组是最简单的也是一般情况下最快的集合,因此我们就从它开始。这也是你经常要使用到的集合类。
你的第一选择应该经常是System.Array类,确切的说,应该是一个数组类型的类。 选择数组类的首要原因,也是最重要的原因是数组是类型安全的。所有其它集合都是存储的System.Object引用,直到C#2.0才引入了范型(参见原则49)。当你申明一个数组时,编译器为你的类型创建一个特殊的System.Array派生类。例如:这样创建了申明并创建了一个整型的数组:
private int [] _numbers = new int[100];
这个数组存储的是整型,而不是System.object的引用。这很重要,因为你在一个数组上添加,访问,删除值类型时,可以避免装箱与拆箱操作的性能损失(参见原则17)。上面的初始化操作创建了一个一维的数组,里面存放了100个整数。所有被数组占用的内存都被清0了。值类型数组都是0,而引用数组都是null。所有在数组里的元素可以用索引访问:
- ››根据经纬度坐标取详细地址(包括国,省,市,街道...
- ››根据浏览器和分辨率调用CSS代码
- ››根据批量URL生成有书签的PDF文档的解决方案
- ››根据status信息对MySQL服务器进行优化
- ››Effective C# 原则40:根据需求选择集合
- ››Effective C# 原则41:选择DataSet而不是自定义的...
- ››Effective C# 原则42:使用特性进行简单的反射
- ››Effective C# 原则43:请勿滥用反射
- ››Effective C# 原则44:创建应用程序特定的异常类
- ››Effective C# 第6章:杂项
- ››Effective C# 原则45:选择强异常来保护程序
- ››Effective C# 原则47:选择安全的代码
更多精彩
赞助商链接