Бөлісу құралы:


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

Значение свойства

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

Комментарии

После задания этого свойства целевому объекту убедитесь, что нет других надежных ссылок на объект; в противном случае он не будет собираться.

Применяется к

См. также раздел