我正在创建一个多维数组来为我查找程序中的内容。我让它正确地读取和写入,但是一旦我在读取之后尝试改变它的值,它似乎就会停止工作。
我的阅读代码是:
Arr = <Code>;(this is a part of code I have not written, but it works)
if (0f == Arr[0,0,0])
book = true;
if (1f == Arr[0,0,1])
video = true;
上面这部分有效,我对它进行了打印测试,它们适用于视频和书籍。这部分也与我的问题无关。
这是我写的部分。
Arr[0,0,0] = 0f;
Arr[0,0,1] = 1f;
if (book == true)
Arr[0,0,0] = 1f;
else if (video == true)
Arr[0,0,1] = 2f;
我收到错误:IndexOutOfRangeException:数组索引超出了第80行的范围。第80行是Arr[0,0,0] = 0;
,它前面的行是
print(Arr.GetLength(0).ToString());
print(Arr.GetLength(1).ToString());
print(Arr.GetLength(2).ToString());
这些打印出我期望的这个数组的正确长度(3,3,5)。我不太清楚为什么我得到一个indexoutofrangeexception考虑到我已经检查了数组的长度并且看起来没问题 - 我也在线查询,是的,这是在C#中访问多维数组的方法。我以前做了一些,但是我无法弄清楚为什么我在一个数组上得到一个超出范围的例外,该数组的大小适合我使用它。
答案 0 :(得分:0)
首先,您应该知道Array是抽象类
public abstract class Array : ICloneable, IList, ICollection, IEnumerable
所以你不能这样做:
Array arry = new Array();
但你可以这样做:
Array[,,] arry = new Array[1,2,3];
为什么会这样?你应该注意[,,]
,你只声明一个abstruct类数组但没有实现它,所以它可以工作
以下示例显示如何声明Array并实现它,将value设置为其成员:
static void Main(string[] args)
{
//Declare a int 3-dimentions array and initial its values
int[, ,] a = new int[,,] { { { 1, 2, 3 } }, { { 2, 3, 4 } }, { { 2, 3, 4 } } };
if (a[0, 0, 0] == 0f) //<-- It's aright
{
//dosomething
}
;
a[0, 0, 0] = 20; //<it's aright too
//declare a 3-dimentions array
Array[, ,] arry = new Array[1, 2, 3]; //set its value
arry[0, 0, 0] = new int[] { 1, 2, 3 };
arry[0, 0, 1] = new int[] { 1, 2, 3 };
}
我根据您发布的内容了解您的问题