Что означает использование (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