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

Комментарии

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

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

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