gpt4 book ai didi

c# - StreamReader NullReferenceException

转载 作者:行者123 更新时间:2023-11-30 15:34:25 34 4
gpt4 key购买 nike

我正在制作一个函数,它将从 StreamReader 中获取行数,不包括注释(以“//”开头的行)和新行。

这是我的代码:

private int GetPatchCount(StreamReader reader)
{
int count = 0;

while (reader.Peek() >= 0)
{
string line = reader.ReadLine();
if (!String.IsNullOrEmpty(line))
{
if ((line.Length > 1) && (!line.StartsWith("//")))
{
count++;
}
}
}

return count;
}

我的 StreamReader 的数据是:

// Test comment

但我收到错误消息,“对象引用未设置为对象的实例。”有什么办法可以解决这个错误吗?

编辑事实证明,当我的 StreamReader 为空时会发生这种情况。所以根据 musefan 和 Smith 先生建议的代码,我想出了这个:

private int GetPatchCount(StreamReader reader, int CurrentVersion)
{
int count = 0;
if (reader != null)
{
string line;
while ((line = reader.ReadLine()) != null)
if (!String.IsNullOrEmpty(line) && !line.StartsWith("//"))
count++;
}
return count;
}

感谢您的帮助!

最佳答案

不需要Peek(),这实际上也可能是问题所在。你可以这样做:

string line = reader.ReadLine();
while (line != null)
{
if (!String.IsNullOrEmpty(line) && !line.StartsWith("//"))
{
count++;
}
line = reader.ReadLine();
}

当然,如果您的 StreamReader 为 null,那么您就有问题了,但是仅您的示例代码不足以确定这一点 - 您需要对其进行调试。应该有大量调试信息供您确定哪个对象实际上为空

关于c# - StreamReader NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16150606/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com