首页 > 解决方案 > 我应该处理 StreamReaders/Writers 的副本吗

问题描述

所以我有一个以 StreamReader 作为变量的类。StreamReader 是通过构造函数设置的。当我使用这个类时,我在类之外创建了一个 StreamReader 并通过它。然后我处理通过类的构造函数传递的 StreamReader 实例。我需要在类中处理 StreamReader 实例吗?

代码:

private class Class1
{
    private StreamReader Reader;

    public Class1(StreamReader Reader)
    {
        this.Reader = Reader;
    }
}

private class Class2
{
    public void Test()
    {
        StreamReader Reader = new StreamReader(@"");
        Class1 Test = new Class1(Reader);
        Reader.Dispose();
        //Do I need to dispose the Reader in Class1 aswell?
    }
}

标签: c#system.io.directory

解决方案


您正在将 1 个实例传递给StreamReader您的Class1实例。它不会创建副本,它会传递该现有StreamReader. 如果您要调用this.Reader.Dispose();您的实例,您将在您可以在方法中创建Class1的完全相同的实例上调用它。StreamReaderTest()

所以这个代码块的答案是No,没有必要Dispose在同一个实例上再次调用。


推荐阅读