weak referenceとは? わかりやすく解説

WeakReference クラス

"弱い参照" を表します。弱い参照は、オブジェクトがガベージ コレクションの対象になっている状態のままで、そのオブジェクトを参照します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class WeakReference
    Implements ISerializable
Dim instance As WeakReference
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class WeakReference : ISerializable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class WeakReference : ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class WeakReference implements ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public class WeakReference implements ISerializable
解説解説

共通言語ランタイムのガベージ コレクションの機構は、アクセスできないオブジェクトをメモリからクリアします。オブジェクトの参照が null 参照 (Visual Basic では Nothing) に設定された場合など、直接、間接を問わずオブジェクトへのすべての参照が無効になると、そのオブジェクトにはアクセスできなくなります。アクセス可能なオブジェクトへの参照は、"強い参照" と呼ばれます。

弱い参照でも、アクセス可能なオブジェクトを参照します。このようなオブジェクトはターゲットと呼ばれます。ユーザーがターゲットへの強い参照を作成するには、Target プロパティの値を変数に割り当てます。ただし、強い参照で参照されないターゲットは、弱い参照で参照されていてもガベージ コレクションの対象になります。

オブジェクトがガベージ コレクションの対象になる時点と、このオブジェクトが収集される時点との間に遅延が生じることがあります。ターゲットの収集後に、ユーザーがそのターゲットを取得しようとした場合、null 参照だけが取得されます。ターゲットがまだ収集されていない場合には、有効な参照を取得できます。

Finalize メソッドが存在し、さらにこのメソッドを呼び出すように指示されている場合には、ガベージ コレクションは、オブジェクトに対してこのメソッドを呼び出します。つまり、終了処理が実行されます。終了処理が完了した後に、ユーザーが現在の WeakReference オブジェクトの IsAlive プロパティまたは Target プロパティを使用してオブジェクトにアクセスしようとすると、InvalidOperationException がスローされます。

用語
パフォーマンスに関する考慮事項
.NET Framework のセキュリティ.NET Framework のセキュリティ
継承階層継承階層
System.Object
  System.WeakReference
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

WeakReference コンストラクタ (Object, Boolean)

指定したオブジェクトを参照し、指定した再生処理追跡を使用する WeakReference クラスの新しいインスタンスを初期化します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    target As Object, _
    trackResurrection As Boolean _
)
Dim target As Object
Dim trackResurrection As Boolean

Dim instance As New WeakReference(target,
 trackResurrection)
public WeakReference (
    Object target,
    bool trackResurrection
)
public:
WeakReference (
    Object^ target, 
    bool trackResurrection
)
public WeakReference (
    Object target, 
    boolean trackResurrection
)
public function WeakReference (
    target : Object, 
    trackResurrection : boolean
)

パラメータ

target

追跡するオブジェクト。

trackResurrection

オブジェクト追跡の停止時期を示します。true を設定すると、終了後にオブジェクトが追跡されます。false を設定すると、オブジェクトの追跡は終了が実行される時点で停止します。

解説解説

trackResurrection が false の場合は短い弱い参照が作成されます。trackResurrection が true の場合は長い弱い参照が作成されます。通常、短い弱い参照だけが必要です。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

WeakReference コンストラクタ


WeakReference コンストラクタ (SerializationInfo, StreamingContext)

指定したシリアル化およびストリーム オブジェクトからの逆シリアル化されたデータを使用して、WeakReference クラスの新しいインスタンスを初期化します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
Dim info As SerializationInfo
Dim context As StreamingContext

Dim instance As New WeakReference(info,
 context)
protected WeakReference (
    SerializationInfo info,
    StreamingContext context
)
protected:
WeakReference (
    SerializationInfo^ info, 
    StreamingContext context
)
protected WeakReference (
    SerializationInfo info, 
    StreamingContext context
)
protected function WeakReference (
    info : SerializationInfo, 
    context : StreamingContext
)

パラメータ

info

現在の WeakReference オブジェクトのシリアル化または逆シリアル化に必要なすべてのデータを保持するオブジェクト。

context

(予約済み) info によって指定されたシリアル化ストリームの転送元と転送先の説明。

例外例外
例外の種類条件

ArgumentNullException

info が null 参照 (Visual Basic では Nothing) です。

解説解説

context パラメータは予約されているため、この操作では使用されません。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

WeakReference コンストラクタ (Object)

指定したオブジェクトを参照する、WeakReference クラスの新しいインスタンスを初期化します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

WeakReference プロパティ


WeakReference メソッド


WeakReference メンバ

"弱い参照" を表します。弱い参照は、オブジェクトがガベージ コレクションの対象になっている状態のままで、そのオブジェクトを参照します。

WeakReference データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
プロテクト コンストラクタプロテクト コンストラクタ
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ TrackResurrection 現在の WeakReference オブジェクトが参照するオブジェクトを、その終了後に追跡するかどうかを示す値を取得します。
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

WeakReference クラス
System 名前空間
GC クラス



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「weak reference」の関連用語

weak referenceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



weak referenceのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS