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

Есть ли прецедент для использования "this" при вызове GC.SuppressFinalize(this)?

Я только что реализовал шаблон Dispose, и когда я просто набрал строку GC.SuppressFinalize(this), мне было интересно, существует ли когда-либо вариант использования вместо this в качестве параметра метода. >

Это типичный шаблон:

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

Имеет ли смысл называть GC.SuppressFinalize() чем-то иным, чем this?

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(foo);  // should this ever happen?
}
4b9b3361

Ответ 1

В соответствии с MSDN:

http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx

На самом деле возможно, что ваш пример: GC.SuppressFinalize(foo) будет использоваться в определенных сценариях, но не в сценарии общего шаблона размещения.

В примере вы можете написать какой-то шаблон управления удалением для многих объектов вместо реализации общего шаблона удаления из вашего объекта. другой вариант - если вы хотите, чтобы объект оставался подавленным, а позже, возможно, потребовал его? никогда не делал этого.. но это возможно.

Возможно, да... скорее всего, произойдет - и, возможно, никогда.