2013-10-16 129 views
-4
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访问多维数组抛出异常

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

+0

至少格式的代码 –

+0

数组大小是4(00,01,10,11),并要设置值0,2。这是出界的。你有二维数组,但你假设它是3D数组。这是问题。 –

+2

数组索引从0开始,所以如果声明了[2,2],您将得到2X2的数组。所以要添加元素到数组中,只有2个点从零开始[0,0] [0,1]'&'[1,0] [1,1]'。检查@Nikhil Agrawal的答案 – Nilesh

回答

0

当定义的[2,2]阵列,这意味着尺寸2×2,这意味着索引(0,1)只,而不是2

array1[2,0] = "Nithya"; 

是你第一例外

0

声明你数组大小为3,3,其索引将为0,1,2,您需要。

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

永远记住指数是从零开始的,即它们从0

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]; 
1

您已经定义了大小为[2,2]的阵列,您可以在其中添加4个值。但是你加9个值,所以你Array报关行更改为:

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