示例:
variable = new StreamReader( file ).ReadToEnd();
这可以接受吗?
答案 0 :(得分:42)
不,这不会关闭StreamReader。你需要关闭它。使用为您执行此操作(并将其处理以便更快地进行GC):
using (StreamReader r = new StreamReader("file.txt"))
{
allFileText = r.ReadToEnd();
}
或者在.Net 2中,您可以使用新文件。静态成员,那么你不需要关闭任何东西:
variable = File.ReadAllText("file.txt");
答案 1 :(得分:19)
您应该始终处置您的资源。
// the using statement automatically disposes the streamreader because
// it implements the IDisposable interface
using( var reader = new StreamReader(file) )
{
variable = reader.ReadToEnd();
}
或者至少手动调用它:
reader = new StreamReader(file);
variable = reader.ReadToEnd();
reader.Close();
答案 2 :(得分:6)
您需要处理实现IDisposable
的对象。使用using
语句确保在不显式调用Dispose方法的情况下处理它。
using (var reader = new StreamReader(file))
{
variable = reader.ReadToEnd();
}
variable = File.ReadAllText(file);
答案 3 :(得分:4)
是的,每当您创建一次性对象时,您最好使用using语句
处理它using (var reader = new StreamReader(file)) {
variable = reader.ReadToEnd(file);
}
在这种情况下,您可以使用File.ReadAllText
方法来简化表达式
variable = File.ReadAllText(file);
答案 4 :(得分:0)
关闭StreamReader
是一种很好的做法。使用以下模板:
string contents;
using (StreamReader sr = new StreamReader(file))
{
contents = sr.ReadToEnd();
}
答案 5 :(得分:0)
最好使用使用关键字;那么你不需要明确地关闭任何东西。