Что означает использование (object obj = new Object ())? - PullRequest
7 голосов
/ 12 января 2010

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

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

Ответы [ 5 ]

13 голосов
/ 12 января 2010

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

{
  //Assumes SomeObject implements IDisposable
  SomeObject obj = new SomeObject();
  try
  {
    // Do more stuff here.       
  }
  finally
  { 
    if (obj != null)
    {
      ((IDisposable)obj).Dispose();
    }
  }
}
5 голосов
/ 12 января 2010
using (object obj = new object())
{
    //random stuff
}

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

object obj = new object();
try 
{
    // random stuff
}
finally {
   ((IDisposable)obj).Dispose();
}
1 голос
/ 12 января 2010

почему он существует.

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

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

0 голосов
/ 12 января 2010

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

0 голосов
/ 12 января 2010

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

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