Подтвердить что ты не робот

Вы можете распоряжаться несколькими объектами в блоке "Использовать"?

Как позаботиться о том, чтобы несколько объектов были удалены в операторе Using?

Пример кода

using(MyClass obj = new MyClass())
{
    MyOtherClass objOC= new MyOtherClass()
    TextReader objTR = new StringReader(...);  
    // other code
}

MyClass obj будет располагаться в конце блока "Использование", но тогда MyOtherClass objOC и TextReader objTR. Насколько я знаю, они не будут удалены, так что должен ли я иметь вложенный блок Использования, как это показано ниже? Мне понадобится реальный широкоэкранный монитор, если количество объектов увеличится

Правильно ли это?

using(MyClass obj = new MyClass())
{
    using (MyOtherClass objOC= new MyOtherClass())
    {
        using (TextReader objTR = new StringReader(...))
        {
           //code using all three objects 
        }   
    } 
    // other code using just `MyClass obj`
}

MyClass и MyOtherClass реализуют IDisposable

4b9b3361

Ответ 1

Да, ваш код верен. Вот пара других вещей, которые вы, возможно, захотите узнать...

Вы можете объявлять несколько объектов одного и того же типа в одном операторе using. Из документации:

using (Font font3 = new Font("Arial", 10.0f), 
            font4 = new Font("Arial", 10.0f))
{
    // Use font3 and font4.
}

Для использования нескольких объектов разных типов вы можете использовать однострочный синтаксис для экономии места:

using (MyClass obj = new MyClass())
using (MyOtherClass objOC= new MyOtherClass())
using (TextReader objTR = new StringReader(...))
{
    // code using all three objects 
}   

Ответ 2

Да, если вы хотите гарантировать, что вызов Dispose(..) для всех из них вы должны заключить их внутри using statment, как во втором примере.

Или вы можете объявить несколько объектов внутри одного оператора using. Это вопрос стиля кодирования и потока кода.