(一) 多维数组
一维数组由排列在一行中的所有元素组成,它只有一个索引。从概念上讲,二维数组就像一个具有行和列的表格一样。
我们可以用一个二维数组表示这个表。先声明并创建一个二维数组Score:
int[,] Score = new int[5, 2];
其中5表示行数,2表示列数。二维数组有两个索引(索引号从0开始),其中一个表示行,一个表示列,如我们要将第1行第2列的元素赋值为88,表示为:
Score[0, 1] = 88;
Score [0, 1]表示学生1的考试2成绩,Score[0, 0]表示学生1的考试1成绩。
可以在声明数组时将其初始化,如下所示:
int[,] myArray = new int[,] {{1,2}, {3,4}, {5,6}, {7,8}};
如果在声明数组时提供了初始值设定项,可省略 new 语句:
int[,] myArray = {{1,2}, {3,4}, {5,6}, {7,8}};
如果要声明一个数组变量但不将其初始化,必须使用 new 运算符将数组分配给此变量,例如:
int[,] myArray;
myArray = new int[,] {{1,2}, {3,4}, {5,6},{7,8}}; // 正确
myArray = {{1,2}, {3,4}, {5,6},{7,8}}; // 错误
可以给数组元素赋值,例如:
myArray[2, 1] = 25;
也可以读取数组元素的值,例如:
int aNumber = myArray1[0, 1];
2、二维数组的长度
每一维的长度可以通过GetLength方法来得到。维度的最小下标值始终是0,最大下标值由该数组的GetUpperBound方法返回。
w. GetUpperBound (0)=w. GetLength(0)-1
(二)值类型与引用类型
前面讲的基本数据类型都是值类型,到目前为止学过的数组、String、类是引用类型。如果某个数据类型在自己的内存分配中包含数据,则该数据类型是“值类型”。
“引用类型”含有指向包含数据的其他内存位置的地址。也就是说,值类型变量的值是该变量包含的实际数据,该实际数据存储在值类型变量的存储位置中。引用类型变量的值为一地址,该变量包含的数据存储在该地址指向的内存位置中。
1、值类型
下面我们介绍把一个变量的值赋给另外一个变量时发生的情况,考虑下列使用整数的赋值语句:
int num1, num2;
num1 = 14;
num2 = num1;
num1 += 5;
其中,变量声明语句int num1, num2;分配了存储了一个类型为int的值的存储位置,同时命名这个位置为num1;分配了存储了一个类型为int的值的另一个存储位置,同时命名这个位置为num2。
2、引用类型
引用类型的变量(又称对象变量)的存储位置包含的则是内存地址,引用类型的变量所引用的对象(实际数据)保存在此地址指向的存储位置中。
分析代码
int [] myarray1;
int []myarray2;
myarray1=newint32[] {1,2,3};
myarray2=myarray1;
myarray1[0]=100;