次の方法で共有


Lazy<T>.IsValueCreated プロパティ

定義

この Lazy<T> インスタンスに対して値が作成されているかどうかを示す値を取得します。

public:
 property bool IsValueCreated { bool get(); };
public bool IsValueCreated { get; }
member this.IsValueCreated : bool
Public ReadOnly Property IsValueCreated As Boolean

プロパティ値

この Lazy<T> インスタンスに対して値が作成されている場合は true、それ以外の場合は false

注釈

インスタンスに対して Lazy<T> 遅延初期化が発生すると、値が作成されるか、例外がスローされる可能性があります。 例外がスローされた場合、インスタンスの後続の Lazy<T> 動作は、例外キャッシュが有効かどうかによって異なります。 初期化関数を Lazy<T> 指定しないコンストラクターを使用してインスタンスが作成された場合、例外キャッシュは有効になりません。 その後、 Lazy<T> を初期化しようとすると成功する可能性があり、初期化が成功した後、プロパティは を IsValueCreated 返します true。 インスタンスがLazy<T>初期化関数 (コンストラクターの Lazy<T> パラメーターで指定) でvalueFactory作成された場合、例外キャッシュはスレッド セーフ モードによって制御されます。

  • モードが または LazyThreadSafetyMode.Noneの場合、LazyThreadSafetyMode.ExecutionAndPublicationインスタンスを初期化する 2 回目のLazy<T>機会はありません。 例外が発生し、初期化関数で処理されない場合、その例外はキャッシュされ、 プロパティの後続のアクセス時に Lazy<T>.Value 再スローされます。 例外がスローされた場合、値は作成されないため、このような場合 IsValueCreated は を返します false

  • モードが の場合、 LazyThreadSafetyMode.PublicationOnly初期化関数 (またはパラメーターなしのコンストラクター) の実行に成功した最初のスレッドは、 インスタンスの値を Lazy<T> 作成します。 初期化関数が 1 つのスレッドで例外をスローした場合でも、他のスレッドはインスタンスの初期化を Lazy<T> 試みることができます。 値が作成されるまで、 プロパティは を IsValueCreated 返します false

適用対象

こちらもご覧ください