WeakReference.Target 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
현재 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
속성 값
현재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
설명
이 속성을 대상 개체로 설정한 후에는 개체에 대한 다른 강력한 참조가 없는지 확인합니다. 그렇지 않으면 수집되지 않습니다.