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

Класс WeakReference

Пока жива обычная ссылка, цель доступна через Target и IsAlive. У TryGetTarget - тип WeakReference<T>. Строковые литералы интернированы - берут new object().

Синтаксис

object obj = new object(); var weak = new WeakReference(obj);

Пример

Давайте создать слабую ссылку на объект:

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.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,
    взять если жив
  • свойство IsAlive,
    объект ещё жив
  • метод Collect,
    сборка мусора
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить