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

Свойство IsAlive

IsAlive у необобщённого WeakReference равен true, пока цель не собрана. Проверить ссылку - Target, типизированно - TryGetTarget.

Синтаксис

bool alive = weakReference.IsAlive;

Пример

Давайте проверить живую цель:

using System; class Program { static void Main() { object obj = new object(); var weak = new WeakReference(obj); bool res = weak.IsAlive; Console.WriteLine(res); } }

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

True

Пример

Давайте сравнить с наличием Target:

using System; class Program { static void Main() { object obj = new object(); var weak = new WeakReference(obj); bool res = weak.IsAlive == (weak.Target != null); Console.WriteLine(res); } }

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

True

Пример

Давайте обнулить ссылку и собрать мусор:

using System; class Program { static void Main() { object obj = new object(); var weak = new WeakReference(obj); obj = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); bool res = weak.IsAlive; Console.WriteLine(res); } }

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

False

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

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