Effective C# 原则40:根据需求选择集合
2009-02-19 08:17:44 来源:WEB开发网double num = MyArray[ i * rowLength + j ];
这个世界上的其它人可能更喜欢这样:
double num = MyArray[ i, j ];
但,C和C++其实并不支持多维数组。C#可以,而且对于多维数组的语法:当你创建一个真实的多维数组时,对于编译器和你来说意义都是很清楚的。创建多维数组时只用在熟悉的一维数组标记上扩展一下就行了:
private int[ , ] _multi = new int[ 10, 10 ];
前面的申明创建了一个二维数组,而且是10X10的100个元素。在多维数组上的每一维的长度总是一致的。编译器利用这一特性,可以创建更高效的代码。初始化锯齿数组时须要多次使用初始语句。而在我前面的例子里(译注:指这里:private int[] [] _jagged;),你须要5个语句。更大的数组或者更多维的数组须要更多的初始代码,而且你要手动编写。然而 ,多维数组在初始化时只要指定多少维就行了。此外,多维数组在初始化元素时更有效。以于值类型数组在初始化时是直接在有效的数组索引上包含该值,所有的内容就是0。而引用类型的数组则是null。数组的数组在内层上都包含null引用。
访问多维数组时比访问锯齿数组要快得多,特殊是在列或者对角线上访问时。编译器在数组的每个维上是使用的指针算法。锯齿数组则要为每个一维数组查找正确的(指针引用)值。
多维数组可以当成数组在很多情况下使用。假设你创建一个棋盘游戏,你可能须要在一个格子上创建一个64个方格的棋盘:
private Square[ , ] _theBoard = new Square[ 8, 8 ];
这个初始化创建了数组来存储方格,假设这些方格是引用类型,这些方格自己还没有创建,而且每个元素还是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:选择安全的代码
更多精彩
赞助商链接