Freigeben über


WeakReference.Target Eigenschaft

Definition

Ruft das Objekt (das Ziel) ab, auf das das aktuelle WeakReference-Objekt verweist, oder legt dieses fest.

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

Eigenschaftswert

null, wenn das Objekt, auf das das aktuelle WeakReference-Objekt verweist, an den Garbage Collector übergeben wurde, andernfalls ein Verweis auf das Objekt, auf das das aktuelle WeakReference-Objekt verweist.

Ausnahmen

Der Verweis auf das Zielobjekt ist ungültig. Diese Ausnahme kann beim Festlegen dieser Eigenschaft ausgelöst werden, wenn der Wert ein Nullverweis ist oder wenn das Objekt während des Set-Vorgangs abgeschlossen wurde.

Beispiele

Im folgenden Beispiel wird versucht, ein -Objekt aus einem Cache von Objekten mit schwachen Verweisen abzurufen. Wenn das Objekt für die Garbage Collection freigegeben wurde, wird ein neues -Objekt generiert. Dieses Beispiel ist Teil eines größeren Beispiels, das für die WeakReference -Klasse bereitgestellt wird.

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

Hinweise

Stellen Sie nach dem Festlegen dieser Eigenschaft auf das Zielobjekt sicher, dass keine anderen starken Verweise auf das Objekt vorhanden sind. Andernfalls wird sie nicht gesammelt.

Gilt für:

Weitere Informationen