gpt4 book ai didi

c# - 莫名其妙的索引越界

转载 作者:太空狗 更新时间:2023-10-29 22:07:39 25 4
gpt4 key购买 nike

我的代码中有一段需要求逆矩阵。这只能在方阵上合理地完成,在本例中是 3x3 方阵。我用来反转矩阵的工具一直说我的数组不是正确的正方形。

所以我做了一个小测试:

double[,] x = new double[3, 3];

MessageBox.Show(x.GetLength(0).ToString());
MessageBox.Show(x.GetLength(1).ToString());
MessageBox.Show(x.GetLength(2).ToString());

第一个出现为“3”。第二个出现为“3”。第三个作为 IndexOutOfRangeException 出现。我是不是忽略了一些非常明显的事情,或者……这有点奇怪吗?

(注意:这是使用 .Net 2.0 的 C# 代码)

最佳答案

您只有一个二维数组。为什么您期望要求第三个维度的大小来为您提供有效结果?

Array.GetLength() 方法返回数组指定维度中的元素数。在你的情况下:

x.GetLength(2).ToString();   // asking for size of third dimension

你问的是二维数组第三维的大小是多少。结果是 IndexOutOfRangeException。这是预期的行为。

在您的代码示例中,看起来您可能混淆了每个规定维度的大小与维度数。以下是不同维度的矩形数组的一些示例:

var d1 = new int[5];     // one dimensional array, containing 5 elements
var d2 = new int[3,3]; // two-dimensional 3x3 element array
var d3 = new int[2,2,2]; // three-dimension array of 2x2x2 elements
var d4 = new int[2,5,6,8]; // four dimensional array, of 2x5x6x8 elements

看到图案了吗?维数由您在数组声明中指定的数量决定。每个维度的大小由声明中的每个数字的值决定。

关于c# - 莫名其妙的索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com