Свойство Target
Target есть у необобщённого
WeakReference.
Пока сильная ссылка жива,
Target != null.
Типизированный доступ -
TryGetTarget
у
WeakReference<T>.
Синтаксис
object target = weakReference.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);
bool res = ReferenceEquals(weak.Target, obj);
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.Target != null;
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Смотрите также
-
свойство
IsAlive,
объект ещё жив -
метод
TryGetTarget,
типизированный доступ -
WeakReference,
класс слабой ссылки -
метод
Collect,
сборка мусора