WeakReference.Target Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví objekt (cíl) odkazovaný aktuálním WeakReference objektem.
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
Hodnota vlastnosti
null
pokud byl objekt odkazovaný aktuálním WeakReference objektem shromážděn, jinak odkaz na objekt odkazovaný aktuálním WeakReference objektem.
Výjimky
Odkaz na cílový objekt je neplatný. Tuto výjimku lze vyvolat při nastavování této vlastnosti, pokud je hodnota null odkaz nebo pokud byl objekt dokončen během operace sady.
Příklady
Následující příklad se pokusí získat objekt z mezipaměti objektů se slabými odkazy. Pokud byl objekt uvolněn pro uvolňování paměti, vygeneruje se nový objekt. Tento příklad je součástí většího příkladu zadaného WeakReference pro třídu.
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
Poznámky
Po nastavení této vlastnosti na cílový objekt se ujistěte, že neexistují žádné další silné odkazy na objekt; jinak se neshromažďuje.