为了账号安全,请及时绑定邮箱和手机立即绑定

找不到“IndexOutOfRangeException”的原因

找不到“IndexOutOfRangeException”的原因

C#
繁星点点滴滴 2023-09-16 20:12:47
我遇到了一个关于 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 linesfor (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--|
查看完整描述

4 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

if (linesRead[i][0] == '5')如果行为空,将触发此错误。

尝试

if (linesRead[i].StartsWith("5"))

反而。


查看完整回答
反对 回复 2023-09-16
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

我会空/空检查每一行,以防万一。


var linesRead = System.IO.File.ReadAllLines(@"test.txt"); //Just a bunch of lines


foreach (var line in linesRead)

{

    if (!string.IsNullOrEmpty(line) && line[0] == '5')

    {

        //Do stuff

    }

}


查看完整回答
反对 回复 2023-09-16
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

如果您有一个空字符串,则该字符linesRead[i][0]'\0'(用于标记字符串的结尾)。

如果将第 5 行更改为,if(linesRead[i].Length > 0 && linesRead[i][0] == '5'))则可以跳过空字符串情况。


查看完整回答
反对 回复 2023-09-16
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

这意味着您的文件中某处有一个空行。

您可以使用以下命令跳过这些行:

if (linesRead[i].Length > 0 && linesRead[i][0] == '5')


查看完整回答
反对 回复 2023-09-16
  • 4 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信