WeakReference.Target Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает (целевой) объект, на который ссылается текущий объект WeakReference.
public:
virtual property System::Object ^ Target { System::Object ^ get(); void set(System::Object ^ value); };
public virtual object Target { get; set; }
public virtual object? Target { get; set; }
member this.Target : obj with get, set
Public Overridable Property Target As Object
Значение свойства
Значение null
, если объект, на который ссылается текущий объект WeakReference, не был удален сборщиком мусора; в противном случае ссылка на объект, на который ссылается текущий объект WeakReference.
Исключения
Ссылка на целевой объект является недопустимой. Это исключение может быть создано при задании свойства, если значением является пустая ссылка или объект финализирован во время операции задания.
Примеры
В следующем примере выполняется попытка получить объект из кэша объектов со слабыми ссылками. Если объект был освобожден для сборки мусора, создается новый объект. Этот пример является частью более крупного примера, предоставленного WeakReference для класса.
Data d = _cache[index].Target as Data;
if (d == null) {
// If the object was reclaimed, generate a new one.
Console.WriteLine("Regenerate object at {0}: Yes", index);
d = new Data(index);
_cache[index].Target = d;
regenCount++;
}
else {
// Object was obtained with the weak reference.
Console.WriteLine("Regenerate object at {0}: No", index);
}
return d;
match _cache[index].Target with
| :? Data as d->
// Object was obtained with the weak reference.
printfn $"Regenerate object at {index}: No"
d
| _ ->
// If the object was reclaimed, generate a new one.
printfn $"Regenerate object at {index}: Yes"
let d = Data index
_cache[index].Target <- d
regenCount <- regenCount + 1
d
Dim d As Data = TryCast(_cache(index).Target, Data)
' If the object was reclaimed, generate a new one.
If d Is Nothing Then
Console.WriteLine("Regenerate object at {0}: Yes", index)
d = New Data(index)
_cache(index).Target = d
regenCount += 1
Else
' Object was obtained with the weak reference.
Console.WriteLine("Regenerate object at {0}: No", index.ToString())
End If
Return d
Комментарии
После задания этого свойства целевому объекту убедитесь, что нет других надежных ссылок на объект; в противном случае он не будет собираться.