如果我有这种方法:

public StreamReader GetResourceStream(string filename)
{
    using (Stream stream = this.GetType().Assembly.GetManifestResourceStream(filename))
    using (StreamReader sr = new StreamReader(stream))
    {
        return sr;
    }
}

当我打电话时,我应该这样称呼它吗
StreamReader resource = GetResourceStream("blah.xml");

或这样:
using (StreamReader resource = GetResourceStream("blah.xml"))
{
    // Do stuff
}

如果是第二种方法,这是否意味着using (StreamReader sr = new StreamReader(stream))行通过使用using语句没有任何区别?

最佳答案

GetResourceStream方法将using语句放在要返回的对象周围并没有多大意义。这意味着您将以处置状态返回对象,这有什么用?它将向您抛出ObjectDisposed异常。

因此,请删除工厂方法中的using语句,然后在实际使用的地方应用using语句。

它看起来应该更像这样:

public StreamReader GetResourceStream(string filename)
{
    Stream stream = this.GetType().Assembly.GetManifestResourceStream(filename);
    return new StreamReader(stream)
}

关于c# - 返回在 'using'语句中创建的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7368249/

10-11 12:45
查看更多