Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Роль оператора using

#c_sharp #файлы


Вопрос по поводу оператора using.
Почему когда я пишу так, то в файл ничего не пишется.

static void Main(string[] args)
{
    string[] lines = { "First line", "Second line", "Third line" };
    string docPath = Path.Combine(Directory.GetCurrentDirectory(), "WriteLines.txt");
    StreamWriter outputFile = new StreamWriter(docPath);
    outputFile.WriteLine(lines[0]);
}


А если по примеру с msdn делать, то всё работает. Какую роль играет оператор using
в данном примере? Да и в общем объяснение "Предоставляет удобный синтаксис, обеспечивающий
правильное использование объектов IDisposable" мне непонятно.

static void Main(string[] args)
{
    string[] lines = { "First line", "Second line", "Third line" };
    string docPath = Path.Combine(Directory.GetCurrentDirectory(), "WriteLines.txt");
    using (StreamWriter outputFile = new StreamWriter(docPath))
    {
        foreach (string line in lines)
            outputFile.WriteLine(line);
    }
}

    


Ответы

Ответ 1



using (StreamWriter outputFile = new StreamWriter(docPath)) { foreach (string line in lines) outputFile.WriteLine(line); } // вызывает outputFile.Dispose(), который выталкивает на диск данные из буфера

Ответ 2



using автоматически Dispose и Flush вызывает. Без using можно тоже самое написать: string[] lines = { "First line", "Second line", "Third line" }; string docPath = Path.Combine(Directory.GetCurrentDirectory(), "WriteLines.txt"); StreamWriter outputFile = new StreamWriter(docPath); outputFile.AutoFlush = true; foreach (string line in lines) outputFile.WriteLine(line); outputFile.Dispose(); Ну и в try/finally ещё заключить нужно.

Комментариев нет:

Отправить комментарий