我有这个简单的代码。
int[][] array = {
new int[] {1,2,3},
new int[] {4,5,6},
};
int yLength = array.GetLength(1);
Run Code Online (Sandbox Code Playgroud)
但是最后一行抛出了一个超出范围的异常。这是为什么?GetLength在这种情况下它不应该返回 3 吗?还是 GetLength 仅适用于方形数组?(T[,] 数组)?
如果是这样,我如何使用循环遍历锯齿状数组for?
您正在创建一个数组数组,而不是一个 n 维数组。这些在 C 中是相同的,但在 C# 中不是。这array.GetLength(1)就是抛出异常的原因。
在Array.RankMSDN页面给出了一个语法例子,这两个方面的比较:
int[] array1 = new int[10];
int[,] array2= new int[10,3];
int[][] array3 = new int[10][];
Console.WriteLine("{0}: {1} dimension(s)",
array1.ToString(), array1.Rank); // System.Int32[]: 1 dimension(s)
Console.WriteLine("{0}: {1} dimension(s)",
array2.ToString(), array2.Rank); // System.Int32[,]: 2 dimension(s)
Console.WriteLine("{0}: {1} dimension(s)",
array3.ToString(), array3.Rank); // System.Int32[][]: 1 dimension(s)
Run Code Online (Sandbox Code Playgroud)作为数组实现IEnumerable,您可以简单地使用foreach:
foreach (var innerArray in array)
foreach (var elem in innerArray)
Console.WriteLine(elem);
Run Code Online (Sandbox Code Playgroud)
或者对它们使用 LINQ,记住它是一个嵌套数组的数组。
| 归档时间: |
|
| 查看次数: |
2266 次 |
| 最近记录: |