Пропуски Middle GC, IDisposable и производительность обновлено

Шаблон Dispose

Вопрос

Допишите стандартный шаблон освобождения ресурсов.

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

protected virtual void Dispose(bool __(2)__)
{
    if (_disposed) return;
    if (disposing) _stream.Dispose();
    _disposed = true;
}

Попробуйте сами

Заполните пропуски по номерам.

1
2
Показать ответ и разбор

Коротко

Dispose(true) вызывается из Dispose(), тогда можно трогать управляемые объекты. Из финализатора вызывают Dispose(false): управляемые поля могут быть уже собраны.

Что в пропусках

1

SuppressFinalize

2

disposing

Разбор

Dispose(true) вызывается из Dispose(), тогда можно трогать управляемые объекты. Из финализатора вызывают Dispose(false): управляемые поля могут быть уже собраны. SuppressFinalize снимает объект с финализации.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.