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

Метод TryGetTarget

TryGetTarget объявлен у WeakReference<T>, а не у базового WeakReference. Цель берут через Target без типа. Для смерти цели - Collect после obj = null.

Синтаксис

bool ok = weakReference.TryGetTarget(out T target);

Пример

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

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

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

True

Пример

Давайте прочитать поле через TryGetTarget:

using System; class Payload { public int Value = 12345; } class Program { static void Main() { var obj = new Payload(); var weak = new WeakReference<Payload>(obj); weak.TryGetTarget(out Payload target); int res = target.Value; Console.WriteLine(res); } }

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

12345

Пример

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

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

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

False

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

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