【问题标题】:Multi Dimensional Arrays: "Index was outside the bounds of the array." [duplicate]多维数组:“索引超出了数组的范围。” [复制]
【发布时间】:2018-04-16 20:52:09
【问题描述】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Changed from *int[,] matrix = new int[2, 2];*
            int[,] matrix = new int[3, 3];
            // Still getting error with "[3,3]"

            matrix[0, 0] = 1;
            matrix[0, 1] = 2;
            matrix[0, 2] = 3;

            matrix[1, 0] = 4;
            matrix[1, 1] = 5;
            matrix[1, 2] = 6;

            matrix[2, 0] = 7;
            matrix[2, 1] = 8;
            matrix[2, 2] = 9;

            Console.Write(matrix[0, 2]);

            Console.ReadKey();
        }
    }
}

这是一个通过命令行执行的基本程序。

运行时,不是显示存储在数组 [0,2] 中的数字“3”,而是出现以下错误:

System.IndexOutOfRangeException:'索引超出了数组的范围。'

【问题讨论】:

  • 应该是new int[3, 3];,这里的数字是每个维度的长度。
  • 你可能想看看这个:stackoverflow.com/questions/3814145/…
  • 我正在阅读的这本书给我的印象是数组从零开始向上计数,因此 0、1、2 将算作“三”。
  • C# 中的数组确实从 0 开始。但是创建数组时传递的数字是长度,而不是最大索引。所以new int[2, 2] 创建了一个 2x2 数组,每个维度的最大索引为1。如果你想要一个 3x3 数组,你需要new int[3,3]
  • 嗯,更改为 [3,3] 会产生相同的错误。

标签: c# arrays matrix


【解决方案1】:

这是直接来自C# Specifications

数组的每个维度都有一个相关的长度,该长度是大于或等于零的整数。维度长度不是数组类型的一部分,而是在运行时创建数组类型的实例时建立的。

现在这是回答您问题的部分:

维度的长度决定了该维度的有效索引范围:对于长度为 N 的维度,索引的范围可以是 0 到 N - 1 (含)。

因此,在您的情况下,范围将是 0 到 2 - 1,即 0 和 1。在 VB.NET 等某些语言中,您的假设是正确的,但在 C# 中则不然。 p>

另外,请阅读this SO thread

【讨论】:

    【解决方案2】:

    @josias int[,] matrix = new int[2, 2]; 表明您有一个 2 行 2 列的矩阵。但是在您的代码中,您分配了 3 行和 3 列中的值。如果您有这样的值,请使用以下代码。

    int[,] matrix = new int[3, 3];

    【讨论】:

    • 我以为我们是从零开始计数的?
    • 我更新了原帖。我已更改为 3 * 3 矩阵,但仍然出现“超出范围”错误
    【解决方案3】:

    "新的 int[2, 2];"表示矩阵为 2 x 2。 您正在通过矩阵 [0, 2] 访问第 3 列,因此例外。

    【讨论】:

      猜你喜欢
      • 2018-08-04
      • 2020-04-02
      • 2014-03-09
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多