.NET / C # - удаление объекта с помощью оператора «using» - PullRequest
8 голосов
/ 15 апреля 2010

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

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

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

Спасибо, AJ.

Ответы [ 3 ]

11 голосов
/ 15 апреля 2010

Да. using (x = e) { s } является сахаром для { x = e; try { s } finally { x.Dispose(); } }

4 голосов
/ 15 апреля 2010

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

4 голосов
/ 15 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...