2 回答
TA贡献1829条经验 获得超7个赞
var Counter = Enumerable.Range(0,47).Select(x=>x*10000).ToArray();
应该给你一个 47 个元素的数组。它使用LINQ Enumerable.Range,Select和ToArray方法。
但是,停下来问问自己数组是否是最适合使用的东西(对于您要解决的任何问题)。有现代集合类比数组更适合大多数问题。一般来说,除非您自己编写集合类或需要与旧代码进行互操作,否则我建议您避开数组。
另外,请注意上面的代码是声明性的。我说的是我想要的,而不用担心它是如何完成的细节。在幕后,可能是使用循环或其他某种机制来生成该范围;但我真的不在乎,我只想从那个范围开始,应用一个转换(通过选择),然后强制它进入一个数组。我也不关心它在中间阶段使用什么来存储该范围/计算。
仍然有适合循环的地方 - 但是编写while循环并增加计数器有点奇怪。迭代数组的标准习惯用法是一个for循环:
for(int i=0;i<Counter.Length;i++)
{
Counter[i] = i*10000;
}
还要注意我是如何使用数组的长度而不是对数字进行硬编码的。这确保我们不会离开数组的末尾。您代码中的错误实际上与此有关。当您编写时,new int [46]您正在创建一个包含 46 个元素的数组。这意味着该数组的有效索引是 0-45。您的循环尝试使用索引 46,正如异常所抱怨的那样,它超出了数组的范围。
TA贡献1817条经验 获得超6个赞
简短回答:C# 中的索引从 0 开始,因此元素的数量总是比数组的最后一个索引大 1!即:您有 2 个元素,索引:0 和 1。
您的情况:您用 46 个元素初始化数组,然后您的索引在 0-45 范围内。
- 2 回答
- 0 关注
- 182 浏览
添加回答
举报