C# 二维数组深入理解

数组可以具有多个维度。例如,下列声明创建一个四行两列的二维数组

C#

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

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

C#

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

数组初始化

可以在声明数组时将其初始化,如下例所示。

C#

// Two-dimensional array.
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// The same array with dimensions specified.
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// A similar array with string elements.
string[,] array2Db = new string[3, 2] { { "one", "two" }, { "three", "four" },
                                        { "five", "six" } };

// Three-dimensional array.
int[, ,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } },
                                 { { 7, 8, 9 }, { 10, 11, 12 } } };
// The same array with dimensions specified.
int[, ,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } },
                                       { { 7, 8, 9 }, { 10, 11, 12 } } };

// Accessing array elements.
System.Console.WriteLine(array2D[0, 0]);
System.Console.WriteLine(array2D[0, 1]);
System.Console.WriteLine(array2D[1, 0]);
System.Console.WriteLine(array2D[1, 1]);
System.Console.WriteLine(array2D[3, 0]);
System.Console.WriteLine(array2Db[1, 0]);
System.Console.WriteLine(array3Da[1, 0, 1]);
System.Console.WriteLine(array3D[1, 1, 2]);

// Getting the total count of elements or the length of a given dimension.
var allLength = array3D.Length;
var total = 1;
for (int i = 0; i < array3D.Rank; i++) {
    total *= array3D.GetLength(i);
}
System.Console.WriteLine("{0} equals {1}", allLength, total);

// Output:
// 1
// 2
// 3
// 4
// 7
// three
// 8
// 12
// 12 equals 12

也可以初始化数组但不指定级别。

C#

int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

如果选择声明一个数组变量但不将其初始化,必须使用 new 运算符将一个数组分配给此变量。以下示例显示 new 的用法。

C#

int[,] array5;
array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };   // OK
//array5 = {{1,2}, {3,4}, {5,6}, {7,8}};   // Error

以下示例将值分配给特定的数组元素。

C#

array5[2, 1] = 25;

同样,下面的示例获取特定数组元素的值,并将它赋给变量elementValue。

C#

int elementValue = array5[2, 1];

以下代码示例将数组元素初始化为默认值(交错数组除外):

C#

int[,] array6 = new int[10, 10];
时间: 2024-10-24 02:42:45

C# 二维数组深入理解的相关文章

c语言中二维数组作函数参数以及二维数组的理解

当二维数组作函数参数接受主调函数中的二维数组时,退化为一个指向数组的指针. 在此引用<c与指针>中的观点:作为函数 参数的多位数组名的穿递方式和一维数组名相同--实际传递的是个指向数组第一个元素的指针.但是,两者之间的区别在于, 多维数组的每个元素本身是另外一个数组,编译器需要知道它的维数,以便为函数形参的下标表达式进行求值.

二维数组、多维数组

二维数组: 定义二维数组 int[,] myArray = new int[几个一维数组,数组中的个数]; 数组可以具有多个维度.例如,下列声明创建一个四行两列的二维数组(可以理解为4个1维数组,数组中包含2个元素): int[,] myArray = new int[4,2]; int[,] myArray = new  int[4,2] {{1,2}, {3,4}, {5,6}, {7,8}}; 取值则是 Int i=myArray[0,0] 输出结果i为:1 Int i=myArray[0

三维组和二维数组的区别

我来个形象生动的~把一个数当作一个鸡蛋,那么一个int型的变量就是一个鸡蛋,对吧.现在建立一个一维数组int[5]:这个就相当于在你面前放了一排5个鸡蛋,这里也没问题吧.接下来到二维数组int[3][4]:首先,由二维数组的第二维[4]我们可以确定一排是4个鸡蛋,这个跟刚才的一维数组一样.那么之前的[3]是什么呢?那就是一共有几排了!于是int[3][4]相当于在你面前放了3排的鸡蛋,一排4个~再到三维数组int[3][4][5]:第三维的[5]就是之前一位数组里的一排5个鸡蛋,第二维的[4]就

面试题03_二维数组中查找_剑指offer系列

题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 解题思路: 这是一道考查二维数组的理解和编程能力的题. 在二维数组在内存中是连续存储的.在内存中从上到下存储各行元素,在同一行中按照从左到右存储. 因此可以按照行号和列号来计算出相对数组首部的位置. 由于每一行 和 每一列都是有序的,因此,我们可以拿要查找的数与数组的右上角的数进行比较. 因为每一行从左到右递增,每一列

0511 二维数组定义

二维数组 数组的数组---二维数组的每一个元素是一个一维数组 定义格式 数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度]; int[][] arr = new int[3][5];---定义了一个整型的二维数组,其中包含3个一维数组,每个一维数组可以存储5个整数 arr[0]---下标为0的位置上的一维数组 arr[1][3]---如果要获取具体的元素需要两个下标 数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一

6、JAVA基础-二维数组 及 面向对象理解

1:二维数组(理解) (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}}; D:数据类型[][] 数组名 = {{...},{...},{...}}; (3)案例(掌握): A:二维数组的遍历 B:二维数组的求和 C:杨辉三角形 2:两个思考题(理解) (1)Java中的参数传递

程序猿之--C语言细节13(二维数组和指针,&amp;*a[i][0]的理解,数组1[e]和e[1]很可能你没见过)

主要内容:二维数组和指针,&*a[i][0]的理解.数组1[e]和e[1] #include <stdio.h> #define NUM_ROWS 10 #define NUM_COLS 10 int main(int argc, char **argv) {     int a[NUM_ROWS][NUM_COLS], *p, i = 0; // a理解为指向整数指针的指针 即int **     int c, d=2,*test, e[2] = {4,5},f[2][2] = {{

直观理解C语言中指向一位数组与二维数组的指针

一维数组和指针: 对于一位数组和指针是很好理解的: 一维数组名: 对于这样的一维数组:int a[5];  a作为数组名就是我们数组的首地址, a是一个地址常量 . 首先说说常量和变量的关系, 对于变量来说, 用箱子去比喻再好不过了, 声明一个变量就声明一个箱子,比如我们开辟出一个苹果类型的箱子, 给这个变量赋值就是把盛放苹果的箱子中放入一个实实在在的苹果, 这就是变量的赋值.  而对于数组来说, 就是一组类型相同的箱子中,一组苹果箱子, 可以放入不同的苹果. 一维数组空间: 变量被声明后, 我

二维数组与交错数组的理解

1:数组: //二维数组 表示1个表格. //交错数组的本质是1个1维数组//行固定 但是每1行的列数不固定 //string[][] arr = new string[3][]; //arr[0] = new string[4]; int[][] arr = { new int[] { 1, 2, 3 }, new int[] { 1, 2, 3, 4, 5, 5 } }; // int[] arr = { 1,2,3,4,5}; //行列都固定的情况下 使用二维数组. // string[,