【问题标题】:Index out of range for a double array in a for loop [duplicate]for循环中双精度数组的索引超出范围[重复]
【发布时间】:2021-05-02 13:07:26
【问题描述】:

我是 C# 的初学者。无论我为以下代码尝试了什么,我都会得到 Index out of range 异常:

    double[,] mysine = new double[0, NumPoints];

    double s = (2 * Math.PI) / NumPoints;

    for (int i = 0; i < NumPoints; i++)
    {
        mysine[0, i] = Math.Sin(i * s) + 1;
    }

数组大小为 NumPoints,我的循环从零循环到 (NumPoints-1),这不会出错。我也尝试了其他事情,但无法解决。我还有什么错吗?

【问题讨论】:

  • double[0, X] 如果大小为 0 则 ...
  • 确实,0是一个“空”维度,没有维度,什么都没有,不存在,大小为0,不允许有数据。但是new double mysine[1, NumPoints] 是一个one x NumPoints 矩阵,其中 D1 = 1 个项目,D2 = NumPoints 个项目是大小,所以项目的总数是 1 x NumPoints。也就是说,它只是一个一维数组……所以可以简化,否则这里需要超过 1 个。
  • 为了帮助您提高技能,请查看 C# Tag WikiLearn C# from Microsoft 以及在线教程和专业书籍。

标签: c# arrays for-loop indexing double


【解决方案1】:
double[,] mysine = new double[0, NumPoints];

应该是

double[,] mysine = new double[1, NumPoints];

括号之间的数字定义数组的大小,而不是最大索引。 所以当使用 0 时,实际上是在定义一个不可用的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多