WeakReference.Target Egenskap

Definition

Hämtar eller anger objektet (målet) som refereras av det aktuella WeakReference objektet.

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

Egenskapsvärde

null om objektet som refereras av det aktuella WeakReference objektet har skräp samlats in, annars en referens till objektet som refereras av det aktuella WeakReference objektet.

Undantag

Referensen till målobjektet är ogiltig. Det här undantaget kan genereras när du anger den här egenskapen om värdet är en null-referens eller om objektet har slutförts under den angivna åtgärden.

Exempel

I följande exempel försöker du hämta ett objekt från en cache med objekt med svaga referenser. Om objektet har återtagits för skräpinsamling genereras ett nytt objekt. Det här exemplet är en del av ett större exempel som tillhandahålls WeakReference för klassen.

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

Kommentarer

När du har ställt in den här egenskapen på målobjektet kontrollerar du att det inte finns några andra starka referenser till objektet. annars samlas den inte in.

Gäller för

Se även