.NET - замена вложенных операторов using одним оператором using

Если вы сталкивались с таким кодом C #, как это, с вложенным использованием операторов / ресурсов:

using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var responseStream = response.GetResponseStream())
    {
        using (var reader = new BinaryReader(responseStream))
        {
            // do something with reader
        }
    }
}

Безопасно ли заменить его чем-то вроде этого?

using (var reader = new BinaryReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()))
{
    // do something with reader
}

Приведенный выше пример является лишь примером вложенных одноразовых ресурсов, так что простите, если это не совсем правильное использование. Мне любопытно, когда вы располагаете самым внешним ресурсом (в данном случае BinaryReader), будет ли он рекурсивно располагать свои дочерние элементы для вас, или вам нужно явно располагать каждый «слой» с помощью отдельных операторов using? Например. если вы располагаете BinaryReader, должен ли он располагать потоком ответа, который, в свою очередь, удаляет ответ? Размышление об этом последнем предложении заставляет меня думать, что вам действительно нужны отдельные операторы using, потому что нет способа гарантировать, что объект-оболочка избавится от внутреннего объекта. Это правильно?

Ответы на вопрос(5)

Ваш ответ на вопрос