for循环中双精度数组的索引超出范围[重复]
Posted
技术标签:
【中文标题】for循环中双精度数组的索引超出范围[重复]【英文标题】:Index out of range for a double array in a for loop [duplicate] 【发布时间】: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 Wiki 和 Learn C# from Microsoft 以及在线教程和专业书籍。
【参考方案1】:
double[,] mysine = new double[0, NumPoints];
应该是
double[,] mysine = new double[1, NumPoints];
括号之间的数字定义数组的大小,而不是最大索引。 所以当使用 0 时,实际上是在定义一个不可用的数组。
【讨论】:
以上是关于for循环中双精度数组的索引超出范围[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 UICollectionView 无法访问我在 for 循环中创建的数组 - 致命错误:索引超出范围