Пример:
variable = new StreamReader( file ).ReadToEnd();
Это приемлемо?
Пример:
variable = new StreamReader( file ).ReadToEnd();
Это приемлемо?
Нет, это не закроет StreamReader. Вам нужно закрыть его. Использование делает это за вас (и утилизирует его так, чтобы GC выполнялся раньше):
using (StreamReader r = new StreamReader("file.txt"))
{
allFileText = r.ReadToEnd();
}
Или, в качестве альтернативы, в .Net 2 вы можете использовать новый файл. статические элементы, то вам не нужно ничего закрывать:
variable = File.ReadAllText("file.txt");
ReadAllText
был добавлен в .Net 2.0 (msdn.microsoft.com/en-us/library/)
- person JaredPar; 09.11.2010
Вы всегда должны распоряжаться своими ресурсами.
// 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();
Вам нужно удалить объекты, которые реализуют IDisposable
. Используйте оператор using
, чтобы убедиться, что он удаляется без явного вызова метода Dispose.
using (var reader = new StreamReader(file))
{
variable = reader.ReadToEnd();
}
В качестве альтернативы используйте File.ReadAllText(String)
variable = File.ReadAllText(file);
Да, всякий раз, когда вы создаете одноразовый объект, вы должны избавиться от него предпочтительно с помощью оператора using
using (var reader = new StreamReader(file)) {
variable = reader.ReadToEnd(file);
}
В этом случае вы можете просто использовать метод File.ReadAllText
для упрощения выражения
variable = File.ReadAllText(file);
Хорошей практикой является закрытие StreamReader
. Используйте следующий шаблон:
string contents;
using (StreamReader sr = new StreamReader(file))
{
contents = sr.ReadToEnd();
}
Лучше использовать ключевое слово using; тогда вам не нужно явно ничего закрывать.