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

Tar*_*ity 0 .net c# streamreader while-loop

我是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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

upload.Peek() != null
Run Code Online (Sandbox Code Playgroud)

给我以下编译器警告:

表达式的结果始终是true因为type的值int永远不等于nulltype int.

我已经尝试在Windows 库中查找响应,但了解API本身就是一项任务.

我想我正在寻找的是指导我的搜索或资源以帮助我自己发现答案的有用指针.我确信可能有更好的方法来编写这个任务,但考虑到我对语言的理解,我认为使用和理解到目前为止我学到的工具很重要,在这种情况下是while循环.

Joa*_*son 6

while (upload.Peek() != null)
Run Code Online (Sandbox Code Playgroud)

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

while (upload.Peek() != -1)
Run Code Online (Sandbox Code Playgroud)

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