C#中获取行列的维数和长度
下面是C#多维数组的一些常用属性方法:
array.Length //获取所有元的总数
array.GetLength(int dimension);//获取第dimension + 1维度的元素个数,如果是二维数组,则0获取行数,1获取列数。
array.Rank //获取数组的维数,二维数组则为2,三维数组则为3
array.GetUpperBound(int dimension);//获取第dimension + 1维度的最大索引
array.GetLowund(int diamension);//获取第dimension + 1维度的第一个元素
————————————————
public partial class Form1 : Form { //定义一个5行3列的二维数组 int[,] array = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 78, 88, 98 }, { 78, 88, 98 } }; public Form1() { InitializeComponent(); int a = array.GetLength(0);//返回数组的第一维的长度,二维数组时返回行数,此例返回5 int b = array.GetLength(1);//返回数组的第二维的长度,二维数组时返回列数,此例返回3 int c = array.GetUpperBound(0);//返回第一维数组的索引上限,此例返回4 int d = array.GetUpperBound(1); //返回第二维数组的索引上限,此例返回2 int dimension = array.Rank;//获取维数,此例返回2 int colNum = array.GetUpperBound(0) + 1;//获取指定维度的索引上限,在加上一个1就是总数,这里表示二维数组的行数,此例返回5 int rowNum = array.GetUpperBound(1) + 1;//获取指定维度的索引上限,在加上一个1就是总数,这里表示二维数组的列数此例返回3 int totalNum = array.Length;//获取整个二维数组的长度,即所有元的个数,此例返回15 } }
【实例 1】在 Main 方法中定义一个存放学生成绩的二维数组,并将该数组中每个学生的成绩输出。
根据题目要求,定义二维数组为 double 类型的,代码如下。
class Program { static void Main(string[] args) { double[,] points = { { 90, 80 }, { 100, 89 }, { 88.5, 86 } }; for(int i = 0; i < points.GetLength(0); i++) { Console.WriteLine("第" + (i + 1) + "个学生成绩:"); for(int j = 0; j < points.GetLength(1); j++) { Console.Write(points[i, j] + " "); } Console.WriteLine(); } } }
执行上面的代码,效果如下图所示。
在遍历多维数组元素时使用 GetLength(维度) 方法能获取多维数组中每一维的元素,维度也是从 0 开始的,因此在该实例中获取数组中第一维的值时使用的是 points.GetLength(0)。
在 C# 语言中不仅支持上面给出的多维数组,也支持锯齿型数组,即在多维数组中的每一维中所存放值的个数不同。
锯齿型数组也被称为数组中的数组。定义锯齿型数组的语法形式如下。
数据类型[][] 数组名 = new 数据类型[数组长度][];
数组名[0] = new 数据类型[数组长度];
在这里,数据类型指的是整个数组中元素的类型,在定义锯齿型数组时必须要指定维度。
【实例 2】在 Main 方法中创建一个锯齿型数组,第一维数组的长度是 2、第二维数组的长度是 3、第三维数组的长度是 4,并直接向数组中赋值,最后输出数组中的元素。
根据题目要求,代码如下。
class Program { static void Main(string[] args) { int[][] arrays = new int[3][]; arrays[0] = new int[] { 1, 2 }; arrays[1] = new int[] { 3, 4, 5 }; arrays[2] = new int[] { 6, 7, 8, 9 }; for(int i = 0; i < arrays.Length; i++) { Console.WriteLine("输出数组中第" + (i + 1) + "行的元素:"); for(int j=0;j<arrays[i].Length; j++) { Console.Write(arrays[i][j] + " "); } Console.WriteLine(); } } }
执行上面的代码,效果如下图所示。
锯齿型数组中的值也可以通过循环语句来赋值,与输岀语句类似。
在上面的实例中, arrays 数组中的元素从控制台输入的具体语句如下。
int[][] arrays = new int[3][]; arrays[0] = new int[2]; arrays[1] = new int[3]; arrays[2] = new int[4]; for(int i = 0; i < arrays.Length; i++) { Console.WriteLine("输入数组中第" + (i + 1) + "行的元素:"); for(int j=0;j<arrays[i].Length; j++) { arrays[i][j] = int.Parse(Console.ReadLine()); } Console.WriteLine(); }
注:此文部分内容来源于网络,如有不妥,请联系删除!