【发布时间】:2019-12-28 05:11:39
【问题描述】:
我遇到了一个关于 indexOutOfBounds 异常的奇怪问题。我需要读取数组中每个字符串的第一个字符。
我在第 5 行 (linesRead[i][0]) 出现异常。对我来说最奇怪的是,当我尝试添加用于调试 Console.WriteLine(linesRead[0][0]) / Console.WriteLine(linesRead[linesRead.Length-1][0]) 的行时,它工作得很好。
string[] linesRead = System.IO.File.ReadAllLines(@"test.txt"); //Just a bunch of lines
for (int i = 0; i < linesRead.Length; i++)
{
if (linesRead[i][0] == '5')
{
//Do stuff
}
}
The text inside of test.txt:
5|f-----g-----c---g-----a---|
6|--c-----------------------|
5|---Aa-f-----g-----c-------|
5|------ccdf-ff-----g-----c-|
6|--------------c-----------|
5|--g-----a------Aa-f-----g-|
5|----c-------------ccdf-f--|
【问题讨论】:
-
这些行是什么?我们需要一个minimal reproducible example。偶然的一行是空的吗?
-
第一行必须为空。至少我想不出任何其他原因。
-
其实任何行为空都会触发错误。
-
刚刚添加的文本中有空行。使用调试器来识别这些东西。
linesRead[i]有一个值,您可以在代码中设置断点并使用监视窗口找出该值是什么。一些人发现在某些时候,它是一个空字符串。你瞧:你的一些行是空的。
标签: c# arrays indexoutofrangeexception