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

时间:2013-08-17 18:12:01

标签: c# .net while-loop streamreader

我是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的值永远不会等于null类型的int < / p>

我尝试在Windows library中查找回复,但了解API本身就是一项任务。

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

1 个答案:

答案 0 :(得分:6)

while (upload.Peek() != null)

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

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

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