.NET/C# - Расположение объекта с оператором 'использования'

Предположим, что у меня есть метод как так:

public byte[] GetThoseBytes()
{
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        ms.WriteByte(1);
        ms.WriteByte(2);
        return ms.ToArray();
    }
}

Это все еще расположило бы объект 'мс'? У меня есть сомнения, возможно, потому что что-то возвращается, прежде чем блок операторов закончен.

Спасибо, AJ.

8
задан TheAJ 14 April 2010 в 23:58
поделиться

3 ответа

Да. с использованием (x = e) {s} - сахар для {x = e; попробуйте {s} finally {x.Dispose (); }}

11
ответ дан 5 December 2019 в 08:51
поделиться

Да, вся идея оператора Using в том, что он автоматически утилизирует поток/объект, который вы "используете". отлично сделано.

4
ответ дан 5 December 2019 в 08:51
поделиться

Да, Использование создает блок try..finally , поэтому он удаляет ms (и даже выполняет нулевую проверку в случае, если вы устанавливаете ns на null).

4
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: