While循环警告始终为true,因为类型为';int';永远不等于';null';类型'

本文关键字:类型 int null 不等于 永远 因为 警告 循环 true While | 更新日期: 2023-09-27 18:27:59

我是C#的新手,正在学习C#Head First一书中的一些例子,并尝试以实际的方式应用我所学到的东西。我正在尝试读取一个文本文件,其中包含以下代码:

private StreamReader upload;
private void Form1_Load(object sender, EventArgs e)
{
    if (File.Exists(@"C:'Users'Recon 5'Desktop'ToDo.txt"))
    {
        upload = new StreamReader(@"C:'Users'Recon 5'Desktop'ToDo.txt");
        while (upload.Peek() != null)
        {
            currentTasks.Items.Add(upload.ReadLine());
        }
        upload.Close();
    }
}

上面的代码提供了预期的结果,即将项目从文本文件添加到列表框中。我不明白的是为什么会出现以下表达式:

upload.Peek() != null

正在向我发出以下编译器警告:

表达式的结果总是true,因为类型int的值永远不等于类型intnull

我试着在Windows库中查找响应,但理解API本身就是一项任务。

我想我正在寻找的是指导我搜索的有用指针,或者是帮助我自己发现答案的资源。我相信可能有更好的方法来编写这项任务,但鉴于我对语言的理解,我觉得使用和理解迄今为止所学的工具很重要,在这种情况下是while循环。

While循环警告始终为true,因为类型为';int';永远不等于';null';类型'

while (upload.Peek() != null)

看起来可疑,因为StreamReader.Peek()无法返回null。我怀疑正确的路线是;

while (upload.Peek() != -1)

返回值
类型:System.Int32
一个整数,表示要读取的下一个字符,如果没有要读取的字符或流不支持查找,则为-1。