英語で読む

次の方法で共有


WeakReference.Target プロパティ

定義

現在の WeakReference オブジェクトが参照するオブジェクト (ターゲット) を取得または設定します。

C#
public virtual object Target { get; set; }
C#
public virtual object? Target { get; set; }

プロパティ値

現在の WeakReference オブジェクトが参照するオブジェクトが、ガベージ コレクションで既に収集されている場合は null。それ以外の場合は、現在の WeakReference オブジェクトが参照するオブジェクトへの参照。

例外

ターゲット オブジェクトへの参照が無効です。 この例外は、値が null 参照の場合か、設定操作中にオブジェクトが終了した場合に、このプロパティを設定するときにスローされます。

次の例では、弱い参照を持つオブジェクトのキャッシュからオブジェクトを取得しようとします。 オブジェクトがガベージ コレクション用に再利用された場合は、新しいオブジェクトが生成されます。 この例は、 クラスに対して提供されるより大きな例の WeakReference 一部です。

C#
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;

注釈

このプロパティをターゲット オブジェクトに設定した後、オブジェクトへの他の厳密な参照がないことを確認します。それ以外の場合、収集されません。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください