Lazy<T>.IsValueCreated プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この 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
。
適用対象
こちらもご覧ください
.NET