Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1042 of 1492 menu
◀ ▶

Метод SuppressFinalize

SuppressFinalize говорит сборщику не вызывать ~TypeName для экземпляра. Вызов не бросает. Порядок финализации не фиксирован - в примере не ждут строку из деструктора. Рядом - KeepAlive и GC.

Синтаксис

GC.SuppressFinalize(obj);

Пример

Давайте отменить финализацию объекта:

using System; class WithFinalizer { ~WithFinalizer() { } } class Program { static void Main() { var obj = new WithFinalizer(); GC.SuppressFinalize(obj); Console.WriteLine("abcde"); } }

Результат выполнения кода:

"abcde"

Пример

Давайте вызвать метод для обычного объекта без финализатора:

using System; class Program { static void Main() { object obj = new object(); GC.SuppressFinalize(obj); Console.WriteLine("abcde"); } }

Результат выполнения кода:

"abcde"

Пример

Давайте вызвать метод и сразу прочитать поле:

using System; class Holder { public int Value = 12345; ~Holder() { } } class Program { static void Main() { var obj = new Holder(); GC.SuppressFinalize(obj); int res = obj.Value; Console.WriteLine(res); } }

Результат выполнения кода:

12345

Смотрите также

  • метод KeepAlive,
    удержать объект
  • метод Collect,
    сборка мусора
  • GC,
    класс сборщика
  • WeakReference,
    слабая ссылка
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить