Он разделяет Модель и Представление, управляемые Контроллером. Что касается Модели, Ваши Модели должны следовать ОО-архитектуре, будущие усовершенствования и другое обслуживание базы кода должны быть очень простыми, а база кода должна использоваться повторно.
Одна и та же модель может иметь любые виды, например, нет) Одна и та же информация может отображаться в виде различных графических представлений. Один и тот же вид может иметь разные номера моделей, например, разные детали могут быть показаны в виде одного графика, скажем, в виде гистограммы. Это то, что можно использовать как в View, так и в Model.
Улучшения в представлениях и другая поддержка новых технологий для построения представления могут быть легко реализованы.
Парню, который работает над дозой представления, не нужно знать о базовой базе кода Модели и ее архитектуре, наоборот, для модели.
По сути, да. На самом деле вам не нужно закрывать StreamReader. Если вы это сделаете, все, что он сделает, это закроет базовый поток.
@Bruno хорошо замечает закрытие самой внешней оболочки. Рекомендуется закрыть самый внешний поток и позволить ему закрыть базовые потоки, чтобы гарантировать, что все ресурсы высвобождаются должным образом.
From Reflector ...
public class StreamReader : TextReader
{
public override void Close()
{
this.Dispose(true);
}
protected override void Dispose(bool disposing)
{
try
{
if ((this.Closable && disposing) && (this.stream != null))
{
this.stream.Close();
}
}
finally
{
if (this.Closable && (this.stream != null))
{
this.stream = null;
this.encoding = null;
this.decoder = null;
this.byteBuffer = null;
this.charBuffer = null;
this.charPos = 0;
this.charLen = 0;
base.Dispose(disposing);
}
}
}
}
Нет. Вместо этого вам следует закрыть ридер
. На практике это может не представлять никаких проблем, но StreamReader
может добавить некоторые накладные расходы, которые, возможно, потребуется очистить. Поэтому вам всегда следует закрывать самую верхнюю оболочку.
Вы также можете просто использовать метод File.ReadAllText:
txtFile.Text = File.ReadAllText(@"c:\file.txt");
Вам не нужно закрывать StreamReader, потому что он не владеет никакими неуправляемыми ресурсами. Достаточно закрыть FileStream. Вы можете переписать свой код, используя , используя
следующим образом:
public void ReadFile()
{
using (var file = new FileStream("c:\file.txt", FileMode.Open, FileAccess.Read))
{
txtFile.Text = new StreamReader(file).ReadToEnd();
}
}
В общем, если вы сомневаетесь, лучше перестраховаться и утилизировать все объекты IDisposable, когда вы закончили их использовать.
public void ReadFile()
{
using (FileStream file = new FileStream("c:\file.txt", FileMode.Open, FileAccess.Read))
{
using (StreamReader streamReader = new StreamReader(file))
{
txtFile.Text = streamReader.ReadToEnd();
}
}
}