Im做這樣的:試圖int.parse多陣列串
string[,] string1 = {{"one", "0"},{"Two", "5"},{"Three","1"}};
int b = 0;
for(int i = 0; i <= string1.Length; i++)
{
b = int.Parse(string1[i, 1]); // Error occurs here
}
即時得到一個錯誤說,「索引程度陣列的限制」(或類似的東西,該誤差是在丹麥)。
Im做這樣的:試圖int.parse多陣列串
string[,] string1 = {{"one", "0"},{"Two", "5"},{"Three","1"}};
int b = 0;
for(int i = 0; i <= string1.Length; i++)
{
b = int.Parse(string1[i, 1]); // Error occurs here
}
即時得到一個錯誤說,「索引程度陣列的限制」(或類似的東西,該誤差是在丹麥)。
有兩個問題:
string1.Length
將返回6,因爲這是在總長度數組<=
用於比較的,所以它實際上試圖重複7倍。你for
循環應該是:
for (int i = 0; i < string1.GetLength(0); i++)
到GetLength(0)
這裏的調用將返回3, 「第一」 維度的大小。對GetLength(1)
的調用返回2,因爲第二個維度的大小爲2.(但是,您不需要這麼做,因爲基本上對每個「行」的第二個「列」進行了硬編碼。)
有關更多詳細信息,請參閱文檔Array.GetLength()
。
你已經有了正確的答案,我會更新我的正確答案。到右迭代應
for (int i = 0; i < string1.GetLength(0); i++)
{
b = int.Parse(string1[i, 1]);
}
i
由於代表所述第一尺寸的長度,並且固定1
將返回數,即第二元件。
對不起,我先給了錯誤的答案。
不起作用,因爲它*是一個二維數組。發帖前檢查! –
@DanPuzey的確,感謝您指出了這一點。 –
變化到
for(int i = 0; i <= string1.GetLength(0); i++)
{
b = Int32.Parse(string1[i][0]);
}
您的代碼索引1處闖民宅,而不是0,這導致已知爲Array out of bound
不起作用。發帖前檢查! –
@DanPuzey: - 你是對的,我們失去了對主要罪魁禍首的視線。固定.... – perilbrain
你的數組邊界是不正確的在循環異常:
for(int i = 0; i <= string1.Length; i++)
應閱讀:
for(int i = 0; i < string1.GetLength(0); i++)
有兩件事情是錯誤的:<=
與<
意味着你要去一個項目太遠,.Length
返回數組(6)的總長度與GetLength(0)
返回第一維(3)的長度。
將i <= string1.Length
更改爲i < string1.Length
。
不,這仍然會嘗試迭代6次... –
嘗試這種情況:
for(int i = 0; i < string1.GetLength(0) ; i++)
{
b = int.parse(string1[i, 0]); // Error occurs here
}
獲取一個32位整數,它表示在陣列的指定尺寸的元素數。
不,那仍然會失敗...看到我和丹的答案... –
@JonSkeet謝謝指出。 –
另外值得一提的是int.Parse
可能會拋出FormatException
,請考慮int.TryParse
。
** WOW **這裏有很多人發佈相同的不正確答案。好問問題;-) –
我希望這個問題得到一個「普遍問題」徽章。它絕對值得一個。非常有趣的答案。 – tehdoommarine