访问多维数组会抛出超出范围的异常

时间:2013-10-16 06:32:07

标签: c#

using System;
using System.Collections;
class MDArrayDemo
{
  public static void Main()
  {
      string [,] array1 = new string[2, 2];
      array1[0,0] = "Subhadra";
      array1[0,1] = "Leon";
      array1[0,2] = "Maria";
      array1[1,0] = "Shawn";
      array1[1,1] = "Chantel";
      array1[1,2] = "Cheryl";
      array1[2,0] = "Nithya";
      array1[2,1] = "Suresh";
      array1[2,2] = "Kittu";
      Console.WriteLine("My Family {0}\n, {1}\n, {2}",array1 [0,0],array1 [0,1],array1 [0,2]);
      Console.WriteLine("Pseudos {0}\n, {1}\n, {2}",array1 [1,0],array1 [1,1],array1 [1,2]);
      Console.WriteLine("Vile {0}\n, {1}\n, {2}",array1 [2,0],array1 [2,1],array1 [2,2]);
     }
   }

此代码抛出Array out of bounds-Exception

我哪里出错,有没有更好的方法来实现它?

4 个答案:

答案 0 :(得分:1)

您已定义大小为[2,2]的数组,您可以在其中添加4个值。但是您添加了9个值,因此请将Array声明行更改为:

string [,] array1 = new string[3, 3];

答案 1 :(得分:0)

定义[2,2]数组时,表示大小为2x2,表示仅为索引(0,1),而不是2。

  array1[2,0] = "Nithya";

是你的第一个例外

答案 2 :(得分:0)

声明您的索引为3,3的大小为0,1,2的数组。

string[,] array1 = new string[3, 3];

始终记住索引为零,即它们从0开始。

答案 3 :(得分:0)

按代码定义数组

string [,] array1 = new string[2, 2];

表示您正在创建一个每个维度中包含两个元素大小的数组

  

数组为零索引:具有n个元素的数组从0到索引   n-1个。

来源:MSDN

string [,] array1 = new string[n, n];

x     y
0  ,  0
...
...
n-1, n-1

这意味着你开始从零开始计算元素(在代码中n = 2):

x y
0,0
0,1
1,0
1,1

如果您想在每个维度中创建3个元素,那么这应该是您的代码:

string [,] array1 = new string[3, 3];