C#多维数组是指在C#中,可以定义多个维度的数组,比如一维数组、二维数组、三维数组、四维数组……。在C#中,可以使用for循环来实现多个元素的批量赋值。
首先,我们需要定义一个多维数组,比如定义一个二位数组int[,] arr = new int[3,3];然后使用for循环来对这个二位数据进行批量赋值。
for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { arr[i,j] = i + j; } }
上面的代码就是对二位数据arr进行批量赋值的代码,其中i和j分别代表arr的行和列;arr[i,j]就是arr中的一个元素;i+j就是要赋值的内容。
当然,我们也可以使用foreach循环来对多位数据进行批量赋值。例如我们要对一个三位数据int[,,] arr2 = new int[3,3,3]进行批量赋值:
foreach (int item in arr2) { item = 1; //将arr2中的所有元都赋值为1 }
上面的代码就是使用foreach循
多维数组有两种类型:矩形和锯齿。
矩形阵列表示存储器的n维块,锯齿形阵列是阵列阵列。
使用逗号分隔每个维度来声明矩形数组。
以下声明一个矩形二维数组,其中维度为3乘3:
int[,] matrix = new int[3,3];
数组的 GetLength
方法返回从0开始的给定维度的长度:
for (int i = 0; i < matrix.GetLength(0); i++) {
for (int j = 0; j < matrix.GetLength(1); j++) {
matrix[i,j] = i * 3 + j;
}
}
矩形数组可以初始化如下:
int[,] matrix = new int[,] {
{0,1,2},
{3,4,5},
{6,7,8}
};
锯齿数组使用连续的方括号来表示每个维度。
这里是一个声明一个锯齿状的二维数组的例子,其中最外面的维度是3:
int[][] matrix = new int[3][];
内部尺寸未在声明中指定,每个内部数组可以是任意长度。
每个内部数组都隐式初始化为null
,而不是一个空数组。
每个内部数组必须手动创建:
for (int i = 0; i < matrix.Length; i++) {
matrix[i] = new int[3]; // Create inner array
for (int j = 0; j < matrix[i].Length; j++)
matrix[i][j] = i * 3 + j;
}
}
锯齿数组可以初始化如下:
int[][] matrix = new int[][] {
new int[] {0,1,2},
new int[] {3,4,5},
new int[] {6,7,8,9}
};
有两种方法可以缩短数组初始化表达式。
第一个是省略new运算符和类型限定:
char[] vowels = {"a","e","i","o","u"};
int[,] rectangularMatrix = {
{0,1,2},
{3,4,5},
{6,7,8}
};
int[][] jaggedMatrix = {
new int[] {0,1,2},
new int[] {3,4,5,2,2,2,2},
new int[] {6,7,8}
};
第二种方法是使用var
关键字,它告诉编译器隐式地键入一个局部变量:
var i = 3; // i is implicitly of type int
var s = "asdf"; // s is implicitly of type string
var rectMatrix = new int[,]{
{0,1,2},
{3,4,5},
{6,7,8}
};
var jaggedMatrix = new int[][]{
new int[] {0,1,2},
new int[] {3,4,5},
new int[] {6,7,8}
};
我们可以省略new
关键字后的类型限定符,并让编译器推断数组类型:
var letters = new [] {'a','e','i','o','u'}; //编译器推断char []
C#异常using语句许多类封装了非托管资源。这些类实现 System.IDisposable ,它定义了一个名为Dispose的单一无参数方法来清理这...
C# 通用委托委托类型可以包含通用类型参数。例如:public delegate T ConverterT (T arg);有了这个定义,我们可以编写一个适用于...