Почему поток удаляется, когда его писатель удаляется?

Рассмотрим следующий код:

using (var ms = new MemoryStream())
{
    using(var writer = BinaryWriter(ms))
    {
        writer.Write(/*something*/);
        writer.Flush();
    }

    Assert.That(ms.Length > 0); // Throws ObjectDisposedException
}

С одной стороны, одноразовый объект должен избавляться от своих ресурсов; я понимаю, но с другой стороны, объект не создавал и не владеет этим ресурсом, он был предоставлен -> вызывающий код должен взять на себя ответственность за него ... нет?

Я не могу придумать других подобных ситуаций, но является ли это последовательным шаблоном в структуре для любых класс, получающий одноразовые объекты, чтобы избавиться от них самостоятельно?

9
задан Steven Evers 5 December 2010 в 10:38
поделиться