频道栏目
读书频道 > 软件开发 > C# > Visual C#2010开发权威指南
3.8.1 数组(Arrays)
2012-12-08 14:41:20     我来说两句
收藏   我要投稿

本文所属图书 > Visual C#2010开发权威指南

Visual Studio是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日面市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual ...  立即去当当网订购

3.8  使用数组和集合

3.8.1  数组(Arrays)

数组是包含数个相同类型变量的数据结构,数组中的元素被存储在内存中一块连续的空间上。.NET Framework支持的数组类型有一维数组、多维数组和锯齿数组。数组类型都继承自System.Array抽象类,System.Array本身又继承于System.Object。这意味着C#中的数组是引用类型,在托管堆上分配空间。

1. 一维数组

数组类型是以包含的元素类型加上方括号来声明的,例如下面声明并初始化了一个整型的数组:
int[] numbers;
numbers = new int[5];

数组的初始化使用的语法是new操作符加上元素类型和数组的大小,数组一旦初始化完成,它的长度也就固定了。上例中numbers代表了一个长度为5,元素为int类型的数组,每个元素被赋值为0。也可以在初始化时直接为数组中的元素赋值:

int[] numbers = new int[] {1, 2, 3, 4, 5};

或者:

int[] numbers = {1, 2, 3, 4, 5};

上面两种方法并没有指定数组的大小,C#编译器会负责在编译期自动地计算出数组需要的长度。

数组在声明和初始化后,就可以使用索引器访问其中的元素了。数组只支持有整型参数的索引器。通过索引器传送元素号,就可以访问数组。索引器总是以0开头,表示第一个元素。可以传送给索引器的最大值是元素个数减1,因为索引从0开始。在下面的例子中,数组myArray用4个整型值声明和初始化。用索引器0、1、2、3就可以访问该数组中的元素:
int[] numbers = new int[] {1, 2, 3, 4, 5};
int v1 = numbers[0];    // 第一个元素1
int v2 = numbers[1];    // 第二个元素2
numbers[3] = 44;       // 将第四个元素重新赋值为44

2. 多维数组

一维数组用一个整数来索引。多维数组用两个或多个整数来索引。例如,下列声明创建一个四行两列的二维数组:

int[,] array = new int[4, 2];

另外,下列声明创建一个三维(4、2和3)数组:

int[, ,] array1 = new int[4, 2, 3];

使用数组初始化器时,必须初始化数组的每个元素,不能遗漏任何元素。例如:
int[,] array2D = {
{1,2},
{3,4},
{5,6},
{7,8}};
int[, ,] array3D = {
{ {1, 2}, {3, 4} },
{ {5, 6}, {7, 8} },
{ {9, 10}, {11, 12} }};

对于多维数组,同样可以用多个整数作为索引器来访问数组元素:
array2D[1, 1] = 44;
int a = array2D[2, 1];
array3D[2, 1, 1] = 21;
int b = array3D[1, 1, 1];

3. 锯齿数组

二维数组的大小是矩形的,例如3×3个元素。而锯齿数组的大小设置是比较灵活的,在锯齿数组中,每一行都可以有不同的大小。

在声明锯齿数组时,要依次放置开闭括号。在初始化锯齿数组时,先设置该数组包含的行数。定义各行中元素个数的第二个括号设置为空,因为这类数组的每一行包含不同的元素数。之后,为每一行指定行中的元素个数:
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2] { 1, 2 };
jaggedArray[1] = new int[6] { 3, 4, 5, 6, 7, 8 };
jaggedArray[2] = new int[4] { 9, 10, 11, 12 };

迭代锯齿数组中所有元素的代码可以放在嵌套的for循环中。在外层的for循环中,迭代每一行,内层的for循环迭代一行中的每个元素:
for (int row=0; row<jaggedArray.Length; row++)
{
for (int element=0; element<jaggedArray[row].Length; element++)
{
Console.WriteLine("row: {0}, element: {1}, value: {2}",
   row, element, jaggedArray[row][element]);
}
}

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.7.2 结构(Structs)
下一篇:3.8.2 数组和集合接口
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站