bad*_*d99 47

不,这不会关闭StreamReader.你需要关闭它.使用为您执行此操作(并将其配置为更快地使用GC):

using (StreamReader r = new StreamReader("file.txt"))
{
  allFileText = r.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

或者在.Net 2中,您可以使用新文件.静态成员,那么你不需要关闭任何东西:

variable = File.ReadAllText("file.txt");
Run Code Online (Sandbox Code Playgroud)

  • `ReadAllText`是在.Net 2.0中添加的(http://msdn.microsoft.com/en-us/library/system.io.file.readalltext(v=VS.80).aspx) (2认同)

Dis*_*ile 19

您应该始终处置您的资源.

// the using statement automatically disposes the streamreader because
// it implements the IDisposable interface
using( var reader = new StreamReader(file) )
{
    variable = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

或者至少手动调用它:

reader = new StreamReader(file);
variable = reader.ReadToEnd();
reader.Close();
Run Code Online (Sandbox Code Playgroud)

  • 在第二个示例中,您根本不会调用*Dispose()*.并且没有*try-catch*机制来确保调用*Close()*.当你同时添加一个*try-catch*和一个*Dispose()*调用它将导致除了*using*之外的其他内容,就像在你的第一个例子中一样. (4认同)

Gre*_*reg 6

您需要处理实现的对象IDisposable.使用using语句确保在不显式调用Dispose方法的情况下处理它.

using (var reader = new StreamReader(file))
{
  variable = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

或者,使用 File.ReadAllText(String)

variable = File.ReadAllText(file);
Run Code Online (Sandbox Code Playgroud)