Sdílet prostřednictvím


WeakReference.Target Vlastnost

Definice

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

Object

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.

Platí pro

Viz také