数组,望文生义,就是数字的组合
 
好像不大对哎。翻翻书,原来数组就是一个变量的下标列表,存储在数组类型的的变量中。
 
在C#中数组是这样定义的:类型 数组名[数组大小]={数组内容},比如下面就是典型的一维数组
InBlock.gifint[] arr = new int[5] {1,2,3,4,5 };
与C语言不同的是,C#的[ ]是加在类型后面,而不是数组名后面的
 
数组有几个特点:
1、数组中所有变量都是同一类型的。
2、定义数组的时候可以指定大小和内容,也可以只指定大小不指定内容,或者只指定内容不指定大小,也可以两者都不指定。
3、C#中的数组下标是从0开始的,同VBS不同。
4、如果指定数组中的某个值,表达方式是"数组名[下标]"
 
一维数组
我们来看看怎么显示数组中的内容,以一个int类型的数组为例
InBlock.gifint[] arr = new int[] { 3, 7, 1, 5, 9, 11 };
InBlock.giffor (int i = 0; i < arr.Length; i++)
InBlock.gif {
InBlock.gif         Console.WriteLine("报数:arr[{0}] 是 {1}", i, arr[i]);
InBlock.gif }
显示结果
报数:arr[0] 是 3
报数:arr[1] 是 7
报数:arr[2] 是 1
报数:arr[3] 是 5
报数:arr[4] 是 9
报数:arr[5] 是 11
请按任意键继续. . .
 
还有一个更简单的方法,用foreach
InBlock.gifint[] arr = new int[] { 3, 7, 1, 5, 9, 11 };
InBlock.gifforeach(int i in arr)
InBlock.gif {
InBlock.gif
InBlock.gif         Console.WriteLine("报数:{0}", i);
InBlock.gif }
显示结果
报数:3
报数:7
报数:1
报数:5
报数:9
报数:11
请按任意键继续. . .
 
比较一下for循环和foreach循环,可以发现,foreach循环虽然语句更简洁,但是却没办法表现一个很重要的东西:数组的下标。因为变量i本身就是数组中的变量,当然没法再显示下标了。在for循环中,实际上是间接的用i作为下标取得了数组中对应的变量。因此,foreach仅仅适用于取得数组中的变量值。
 
二维数组
这个,语言匮乏了。。。。实际上我们大家都背过的九九乘法表就是一个二维数组,我们打印出来看看就知道了
InBlock.giffor (int i = 1; i < 10; i++)
InBlock.gif {
InBlock.gif         for (int j = 1; j < 10;j++ )
InBlock.gif         {
InBlock.gif                 Console.Write("{0}    ",i*j);
InBlock.gif         }
InBlock.gif         Console.WriteLine();
InBlock.gif }
1    2    3    4    5    6    7    8    9
2    4    6    8    10    12    14    16    18
3    6    9    12    15    18    21    24    27
4    8    12    16    20    24    28    32    36
5    10    15    20    25    30    35    40    45
6    12    18    24    30    36    42    48    54
7    14    21    28    35    42    49    56    63
8    16    24    32    40    48    56    64    72
9    18    27    36    45    54    63    72    81
请按任意键继续. . .
二维数组表达方式是"数组名[行][列]",比如那个81就是arr[8][8],注意不是arr[9][9],因为下标是从0开始的。c#中二维数组的定义也和C不同,是这样定义的:
InBlock.gifint[,] arri = new int[2, 2] { { 1, 2 }, { 3, 4 } };
 
数组的数组
所谓数组的数组,就是行数确定,列数各行不同的二维数组,这种数组在定义的时候,必须定义行数,但是列数为空,在赋值的时候也要使用"new 类型[ ]"方式赋值。
表达方式和C中二维数组倒是差不多:
InBlock.gifint[][] arr=new int[3][]{new int[]{1,2,3,4,5},new int[]{2,3},new int[]{1,2,4}};
这种数组无法使用foreach来取得变量值,但是仍然可以用两个for循环来获得值:
InBlock.gifint[][] arr=new int[3][]{new int[]{1,2,3,4,5},new int[]{6,7},new int[]{8,9,10}};
InBlock.giffor (int i = 0; i < arr.Length; i++)
InBlock.gif {
InBlock.gif         for (int j = 0; j < arr[i].Length; j++)
InBlock.gif         {
InBlock.gif                 Console.Write(arr[i][j]+" ");
InBlock.gif         }
InBlock.gif         Console.WriteLine();
InBlock.gif }
1 2 3 4 5
6 7
8 9 10
请按任意键继续. . .