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 關注
- 214 瀏覽
添加回答
舉報