C# 调用索引时ArgumentOutOfRangeException
我犯了一个非常恼人的错误 我的以下代码是我所拥有的(与1小时前的代码相同) 但现在它在第C# 调用索引时ArgumentOutOfRangeException,c#,indexing,substring,C#,Indexing,Substring,我犯了一个非常恼人的错误 我的以下代码是我所拥有的(与1小时前的代码相同) 但现在它在第行抛出if(line.Substring(0,5)=“\tVNUM\t”)ArgumentOutOfRangeException 你知道怎么解决这个问题吗?“\t”有多少索引?可能行的长度小于5个字符。 用以下内容替换您的(如果): if (line.Length >= 5 && line.Substring(0,5) == "\tVNUM\t") \t字符是一个字符,因此它的长度为1
行抛出if(line.Substring(0,5)=“\tVNUM\t”)
ArgumentOutOfRangeException
你知道怎么解决这个问题吗?“\t”有多少索引?可能
行的长度小于5个字符。
用以下内容替换您的(如果
):
if (line.Length >= 5 && line.Substring(0,5) == "\tVNUM\t")
\t
字符是一个字符,因此它的长度为1
char
顺便问一下,你确定每次迭代都需要读两行吗?我指的是以下代码部分:
while ((line = reader.ReadLine()) != null) // 1st read
{
line = reader.ReadLine(); // 2nd read
编辑
字符串“\tVNUM\t”
是6
字符长,您知道。将其与5个字符长度的子字符串进行比较没有任何意义。谢谢您的回答。字符串行是7个字符长,但如果我用你的代码替换我的代码,它只会跳过这个过程..是的。你说得对。它是多余的,但我只放置了两次来测试它,因为字符串“\tVNUM\t”
是6
个字符长。啊,是的。但读取的行是7个字符长(“\tVNUM\t0”),但我认为在粘贴代码并使用索引播放一段时间后,它现在就可以工作了。只需将5
替换为if
中的6
,以比较6个字符。出现异常时,行的值是多少?这将向您显示问题所在。它是“\tVNUM\t0”。。但现在它起作用了。见下文
while ((line = reader.ReadLine()) != null) // 1st read
{
line = reader.ReadLine(); // 2nd read