WEB开发网
开发学院软件开发C语言 Effective C# 原则40:根据需求选择集合 阅读

Effective C# 原则40:根据需求选择集合

 2009-02-19 08:17:44 来源:WEB开发网   
核心提示: double num = MyArray[ i * rowLength + j ];这个世界上的其它人可能更喜欢这样:double num = MyArray[ i, j ];但,C和C++其实并不支持多维数组,Effective C# 原则40:根据需求选择集合(3),C#可以,而且对于

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。为了初始化每个元素,你还要检测数组上的每一维元素:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Effective 原则 根据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接