Свойство 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,
сборка мусора