Udostępnij za pośrednictwem


WeakReference.Target Właściwość

Definicja

Pobiera lub ustawia obiekt (obiekt docelowy) przywołyny przez bieżący WeakReference obiekt.

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

Wartość właściwości

null jeśli obiekt, do których odwołuje się bieżący WeakReference obiekt, został zebrany w pamięci. W przeciwnym razie odwołanie do obiektu, do których odwołuje się bieżący WeakReference obiekt.

Wyjątki

Odwołanie do obiektu docelowego jest nieprawidłowe. Ten wyjątek można zgłosić podczas ustawiania tej właściwości, jeśli wartość jest odwołaniem o wartości null lub jeśli obiekt został sfinalizowany podczas operacji zestawu.

Przykłady

Poniższy przykład próbuje uzyskać obiekt z pamięci podręcznej obiektów ze słabymi odwołaniami. Jeśli obiekt został odzyskany na potrzeby odzyskiwania pamięci, zostanie wygenerowany nowy obiekt. Ten przykład jest częścią większego przykładu udostępnionego WeakReference dla klasy.

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

Uwagi

Po ustawieniu tej właściwości na obiekt docelowy upewnij się, że nie ma innych silnych odwołań do obiektu; w przeciwnym razie nie zostaną zebrane.

Dotyczy

Zobacz też