C# TextReader上没有EndOfStream检查

C# TextReader上没有EndOfStream检查,c#,streamreader,textreader,C#,Streamreader,Textreader,我发现这个问题没有在这个知识库中解决,于是决定添加问题和答案以帮助他人 我正在创建一个TextReader,使用ReadLine逐行读取文本文件,这需要对此流的结尾进行终止检查 TextReader TR = new TextReader("MyFile.txt"); while (!TR.EndOfStream) // fails to compile here { // do something } TextReader类不存在EndOfStream,此代码将无法编译。解决方案相对

我发现这个问题没有在这个知识库中解决,于是决定添加问题和答案以帮助他人

我正在创建一个TextReader,使用ReadLine逐行读取文本文件,这需要对此流的结尾进行终止检查

TextReader TR = new TextReader("MyFile.txt");
while (!TR.EndOfStream) // fails to compile here
{
    // do something
}

TextReader类不存在EndOfStream,此代码将无法编译。

解决方案相对简单,但C和.NET库的新手以及编写代码太快的专家可能会错过它

TextReader类是StreamReader的子类,后者为其所有子类提供公共功能

因此,解决方案是将读取器声明为StreamReader,然后将其实例化为TextReader


除非您想改用StringReader。TextReader是抽象的。。它是StreamReader的子类
StreamReader TR = new TextReader("MyFile.txt");
while (!TR.EndOfStream) // it finds this property now
{
// do something
}