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

Метод KeepAlive

GC.KeepAlive создаёт «использование» ссылки до конца метода в точке вызова. После него можно безопасно читать поля объекта. Отмена финализатора - SuppressFinalize. Обзор - GC.

Синтаксис

GC.KeepAlive(obj);

Пример

Давайте удержать объект и прочитать поле:

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

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

12345

Пример

Давайте вызвать метод между созданием и чтением:

using System; class Box { public int Data = 7; } class Program { static void Main() { var box = new Box(); Use(box); GC.KeepAlive(box); int res = box.Data; Console.WriteLine(res); } static void Use(Box b) { } }

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

7

Пример

Давайте удержать ссылку на new object():

using System; class Program { static void Main() { object obj = new object(); GC.KeepAlive(obj); bool res = obj != null; Console.WriteLine(res); } }

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

True

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

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