Зачем вызывать Dispose(false) в деструкторе?C#

Место общения программистов C#
Ответить
Anonymous
 Зачем вызывать Dispose(false) в деструкторе?

Сообщение Anonymous »

Ниже приведен типичный пример шаблона утилизации:

Код: Выделить всё

 public bool IsDisposed { get; private set; }

#region IDisposable Members

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (!IsDisposed)
{
if (disposing)
{
//perform cleanup here
}

IsDisposed = true;
}
}

~MyObject()
{
Dispose(false);
}
Я понимаю, что делает Dispose, но не понимаю, почему вы хотите вызвать Dispose(false) в деструкторе? Если вы посмотрите на определение, оно абсолютно ничего не даст, так зачем же кому-то писать такой код? Разве не имело бы смысл вообще не вызывать метод Release из деструктора?

Подробнее здесь: https://stackoverflow.com/questions/628 ... destructor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»