访问多维数组会引发越界异常

本文关键字:越界 异常 数组 访问 | 更新日期: 2023-09-27 18:35:38

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

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

访问多维数组会引发越界异常

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

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

当您定义一个[2,2]数组时,这意味着大小为 2x2,这意味着仅表示索引 (0,1),而不是 2。

  array1[2,0] = "Nithya";

你是第一个例外吗

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

string[,] array1 = new string[3, 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];