多维数组不允许写入



我正在创建一个多维数组来查找我的程序中的东西。我让它读和写正确,但一旦我试图改变它的值后,它似乎停止工作。

我的读代码是:

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)。我不太确定为什么我得到一个indexoutorangeexception考虑到我已经检查了数组的长度,它似乎还可以-我也在网上查了一下,是的,这是在c#中访问多维数组的方式。我以前做过一些,但我不知道为什么我在一个数组上得到一个超出范围的异常,这个数组的大小适合我使用它的用途。

首先,您应该知道Array是一个抽象类

public abstract class Array : ICloneable, IList, ICollection, IEnumerable

所以你不能这样做:

Array arry = new Array();

但是你可以这样做:

   Array[,,] arry = new Array[1,2,3];

为什么它有效?你应该注意[,,],你只声明了一个抽象类数组,但没有实现它,所以它工作

下面的例子展示了如何声明和实现数组,并将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 };
    }

我不知道更多关于你的问题根据你张贴的

相关内容

  • 没有找到相关文章

最新更新