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 объект.
Исключения
Ссылка на целевой объект недопустимая. Это исключение можно создать при настройке этого свойства, если значение равно null или если объект был завершен во время операции задания.
Примеры
В следующем примере показано, как получить объект из кэша объектов с слабыми ссылками. Если объект был восстановлен для сборки мусора, создается новый объект. Этот пример является частью более крупного примера, предоставленного 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
Комментарии
После задания этого свойства целевому объекту убедитесь, что нет других надежных ссылок на объект; в противном случае она не будет собираться.