类型或命名空间名称“StreamReader”找不到。

6

我正在使用C#中的StreamReader。但是出现了错误:

“找不到类型或命名空间名称为‘StreamReader’”

我不知道我做错了什么。

using System.IO;
using System;
class Perfect
{
static void Main()
    {
    string filename = @"marks.cvs";
    StreamReader sr = new StreamReader(filename);
    string line = sr.ReadLine();
    Console.WriteLine(line);    
    sr.Close();
    }
}

你遇到了什么问题? - AWinkle
我收到了错误消息:“找不到类型或命名空间名称为"StreamReader".....” - maddddie123
2
你在类的using部分添加了using System.IO;吗? - AWinkle
当我这样做时,我得到的结果是:"当前上下文中不存在名称为"Console"的内容。 - maddddie123
您正在使用 Windows Forms 结构。Windows Forms 通常不包含控制台。在设计界面上拖动一个文本框,然后回到您的代码中,将 Console.WriteLine(line) 更改为 textBox1.Text = line.ToString();。 - WDS
3个回答

11

StreamReader位于System.IO命名空间中。您可以通过以下方式在代码开头添加此命名空间-

using System.IO;

您可以完全限定 StreamReader 的所有实例,如下所示-

System.IO.StreamReader sr = new System.IO.StreamReader(filename);

但是,如果您最终在System.IO中使用其他对象,则可能会变得有点乏味。因此,我建议选择前者。

关于命名空间和using指令的更多信息-

https://msdn.microsoft.com/zh-cn/library/0d941h9d.aspx

https://msdn.microsoft.com/zh-cn/library/sf0df423.aspx


3

StreamReader需要一个你缺失的命名空间。在.cs文件的顶部添加这两个命名空间。

using System;
using System.IO;
StreamReader sr = new StreamReader(filename);

在文件顶部添加命名空间始终是最佳实践。但是,您可以像 @iliketocode 提到的那样添加 System.IO.StreamReader

System.IO.StreamReader sr = new System.IO.StreamReader(filename);

2

我本来不想发布答案,但是又有一个好的编程实践要指出。

首先,回答你的问题,如果你想使用 StreamReader,你需要告诉编译器在哪里找到它。在你的 .cs 文件顶部添加 using System.IO.StreamReader; 就可以了。

其次,在使用流时,最好将与流的交互包装在 using(){} 中。我会这样写你的代码:

using System;
using System.IO;
using System.IO.StreamReader;

class Perfect
{
    static void Main()
    {
        const string filename = @"marks.cvs";
        using (var sr = new StreamReader(filename))
        {
            string line = sr.ReadLine();
            Console.WriteLine(line);
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接