C #中数组是引用类型, C #定义整型数组方式是: int [] intArray = {1,2,3}; 或 int [] intArray = new int[10]; 而 C++ 中定义整型数组的方式是: int intArray[] = {1,2,3}; 或 int * intArray = new int[10];C #中的数组可以是一维的也可以是多维的,同样也支持矩阵和参差不齐的数组。注意:定义多维数组(矩阵)的方式是 [,,] 而定义多维“参差矩阵”的方式是 [][] 。另外, new 关键字的使用并不一定表示对象是动态分配的(进入栈中)。
下面是 C #中(一维)多维数组常见的定义方式:
int []a1; // 定义一维数组
int [,]a2; // 定义二维数组
int [,,]a3; // 定义三维数组
int []a1 = new int [10]; // 定义一维数组深度
int [,]a2 = new int [10,20]; // 定义二维数组深度
int [,,]a3 = new int [10,20,30]; // 定义三位数组深度
int []a1 = new int []{1,2,3}; // 初始化
int [,]a2 = new int [,]{{1,2,3},{4,5,6}};
还可以定义“参差不齐”的数组:
int [][]var = new int [3][];
var[0] = new int[]{1,2,3};
var[1] = new int[]{1,2,3,4,5,6};
var[2] = new int[]{1,2,3,4,5,6,7,8,9};
注意, int [,]a 和 int [][]a 的区别:前者定义了一个二维固定数组,后者定义了一个二维可变数组。只是它们都还没被分配空间和初始化。 int [][]var = new int[3][4]; 是错误的。
以下错误:
class Test
{
static void F(int []arr){}
static void Main()
{
F({1,2,3});// 出错! {1,2,3} 并非有效表达式。
}
}
以下正确:
class Test
{
statci void F(int []arr){}
static void Main()
{
F(new int []{1,2,3});
}
}