.net 我可以从方法返回StreamReader吗?

.net 我可以从方法返回StreamReader吗?,.net,.net,我可以从方法返回StreamReader吗?当然可以。不过,这不是一个好主意——您正在用一种方法创建StreamReader,然后用另一种方法关闭它。最好用一种方法创建和关闭阅读器。当然可以。不过,这不是一个好主意——您正在用一种方法创建StreamReader,然后用另一种方法关闭它。最好用一种方法创建和关闭读卡器。当然。使用正常的IDispose语义,下面是它的外观: StreamReader MakeStreamReader () { return new StreamRea

我可以从方法返回StreamReader吗?

当然可以。不过,这不是一个好主意——您正在用一种方法创建StreamReader,然后用另一种方法关闭它。最好用一种方法创建和关闭阅读器。

当然可以。不过,这不是一个好主意——您正在用一种方法创建StreamReader,然后用另一种方法关闭它。最好用一种方法创建和关闭读卡器。

当然。使用正常的IDispose语义,下面是它的外观:

  StreamReader MakeStreamReader () {
     return new StreamReader ("somefile.txt");
  }

  void Caller () {
     using (StreamReader r = MakeStreamReader ()) 
        Console.WriteLine (r.ReadToEnd ());
  }

当然。使用正常的IDispose语义,下面是它的外观:

  StreamReader MakeStreamReader () {
     return new StreamReader ("somefile.txt");
  }

  void Caller () {
     using (StreamReader r = MakeStreamReader ()) 
        Console.WriteLine (r.ReadToEnd ());
  }

根据上下文,这不一定是个坏主意。框架中的许多方法的唯一目的是创建调用方负责释放的可支配资源。其中最重要的是File.OpenText、WebResponse.GetResponseStream、Control.CreateGraphics等@Josh:我同意你的观点,这已经被广泛采用了。我仍然认为,最好的做法是在接近创作的时候进行处理,这样你就不太可能忘记正确地处理它。根据上下文的不同,这不一定是个坏主意。框架中的许多方法的唯一目的是创建调用方负责释放的可支配资源。其中最重要的是File.OpenText、WebResponse.GetResponseStream、Control.CreateGraphics等@Josh:我同意你的观点,这已经被广泛采用了。我仍然认为最好的做法是将垃圾处理保持在接近于创建的位置,这样你就不会忘记正确处理垃圾了。