WeakReference.Target Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.