Что означает использование (object obj = new Object())?

Что означает это утверждение в C#?

        using (object obj = new object())
        {
            //random stuff
        }

5 ответов

Решение

Это означает, что obj инвентарь IDisposible и будет надлежащим образом утилизирован после using блок. Это функционально так же, как:

{
  //Assumes SomeObject implements IDisposable
  SomeObject obj = new SomeObject();
  try
  {
    // Do more stuff here.       
  }
  finally
  { 
    if (obj != null)
    {
      ((IDisposable)obj).Dispose();
    }
  }
}
using (object obj = new object())
{
    //random stuff
}

Эквивалентно:

object obj = new object();
try 
{
    // random stuff
}
finally {
   ((IDisposable)obj).Dispose();
}

Почему он существует?

Он существует для классов, где вы заботитесь об их времени жизни, в частности, когда класс оборачивает ресурс в ОС, и вы хотите немедленно его освободить. В противном случае вам придется ждать CLR (недетерминированных) финализаторов.

Примеры, файловые дескрипторы, соединения с БД, сокетные соединения,....

using обеспечивает правильное расположение выделенного объекта после использования блока, даже если в блоке происходит необработанное исключение.

Это способ охвата объекта, поэтому метод dispose вызывается при выходе. Это очень полезно для соединений с базой данных в частности. ошибка времени компиляции произойдет, если объект не реализует idisposable

Другие вопросы по тегам