다음을 통해 공유


WeakReference.Target 속성

정의

현재 WeakReference 개체에서 참조하는 개체(대상)를 가져오거나 설정합니다.

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

속성 값

Object

현재null 개체에서 참조하는 개체가 가비지 수집되었으면 WeakReference 이고, 그러지 않으면 현재 WeakReference 개체에서 참조하는 개체에 대한 참조입니다.

예외

대상 개체에 대한 참조가 잘못되었습니다. 값이 null 참조인 경우 또는 설정 작업 중 개체가 종료된 경우, 이 속성을 설정하는 동안 이 예외가 throw될 수 있습니다.

예제

다음 예제에서는 약한 참조가 있는 개체의 캐시에서 개체를 가져오려고 시도합니다. 가비지 수집을 위해 개체를 회수한 경우 새 개체가 생성됩니다. 이 예제는에 대해 제공 된 큰 예제의 일부는 WeakReference 클래스입니다.

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

설명

이 속성을 대상 개체로 설정한 후에는 개체에 대한 다른 강력한 참조가 없는지 확인합니다. 그렇지 않으면 수집되지 않습니다.

적용 대상

추가 정보