ConditionalWeakTable<TKey,TValue>.GetOrAdd メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| GetOrAdd(TKey, Func<TKey,TValue>) |
テーブル内の指定したキーを検索し、対応する値を返します。 キーがテーブルに存在しない場合、メソッドは指定されたファクトリを呼び出して、指定されたキーにバインドされた値を作成します。 |
| GetOrAdd(TKey, TValue) |
テーブル内の指定したキーを検索し、対応する値を返します。 キーがテーブルに存在しない場合、メソッドは指定された値を追加し、指定したキーにバインドします。 |
| GetOrAdd<TArg>(TKey, Func<TKey,TArg,TValue>, TArg) |
テーブル内の指定したキーを検索し、対応する値を返します。 キーがテーブルに存在しない場合、メソッドは指定されたファクトリを呼び出して、指定されたキーにバインドされた値を作成します。 |
GetOrAdd(TKey, Func<TKey,TValue>)
テーブル内の指定したキーを検索し、対応する値を返します。 キーがテーブルに存在しない場合、メソッドは指定されたファクトリを呼び出して、指定されたキーにバインドされた値を作成します。
public:
TValue GetOrAdd(TKey key, Func<TKey, TValue> ^ valueFactory);
public TValue GetOrAdd(TKey key, Func<TKey,TValue> valueFactory);
member this.GetOrAdd : 'Key * Func<'Key, 'Value (requires 'Key : null and 'Value : null)> -> 'Value
Public Function GetOrAdd (key As TKey, valueFactory As Func(Of TKey, TValue)) As TValue
パラメーター
- key
- TKey
検索する値のキー。
nullすることはできません。
- valueFactory
- Func<TKey,TValue>
キーの値を作成するコールバック (まだ存在しない場合)。
nullすることはできません。
返品
メソッドの完了後、現在のConditionalWeakTable<TKey,TValue> インスタンスのTKeyにバインドされた値。
例外
key または valueFactory が null。
注釈
複数のスレッドが同じキーを初期化しようとすると、テーブルは同じキーで valueFactory 複数回呼び出すことができます。 これらの呼び出しのうち 1 つだけが成功し、その呼び出しの戻り値がテーブルに追加され、すべてのレーシング GetOrAdd(TKey, Func<TKey,TValue>) 呼び出しによって返されます。 この規則により、テーブルは内部テーブル ロックの外部で valueFactory を呼び出して、デッドロックを防ぐことができます。
適用対象
GetOrAdd(TKey, TValue)
テーブル内の指定したキーを検索し、対応する値を返します。 キーがテーブルに存在しない場合、メソッドは指定された値を追加し、指定したキーにバインドします。
public:
TValue GetOrAdd(TKey key, TValue value);
public TValue GetOrAdd(TKey key, TValue value);
member this.GetOrAdd : 'Key * 'Value -> 'Value
Public Function GetOrAdd (key As TKey, value As TValue) As TValue
パラメーター
- key
- TKey
検索する値のキー。
nullすることはできません。
- value
- TValue
TKeyに追加してバインドする値 (まだ存在しない場合)。
返品
メソッドの完了後、現在のConditionalWeakTable<TKey,TValue> インスタンスのTKeyにバインドされた値。
例外
key は nullです。
適用対象
GetOrAdd<TArg>(TKey, Func<TKey,TArg,TValue>, TArg)
テーブル内の指定したキーを検索し、対応する値を返します。 キーがテーブルに存在しない場合、メソッドは指定されたファクトリを呼び出して、指定されたキーにバインドされた値を作成します。
public:
generic <typename TArg>
TValue GetOrAdd(TKey key, Func<TKey, TArg, TValue> ^ valueFactory, TArg factoryArgument);
public TValue GetOrAdd<TArg>(TKey key, Func<TKey,TArg,TValue> valueFactory, TArg factoryArgument) where TArg : allows ref struct;
member this.GetOrAdd : 'Key * Func<'Key, 'Arg, 'Value (requires 'Key : null and 'Value : null)> * 'Arg -> 'Value
Public Function GetOrAdd(Of TArg) (key As TKey, valueFactory As Func(Of TKey, TArg, TValue), factoryArgument As TArg) As TValue
型パラメーター
- TArg
値ファクトリで使用する追加引数の型。
パラメーター
- key
- TKey
検索する値のキー。
nullすることはできません。
- valueFactory
- Func<TKey,TArg,TValue>
キーの値を作成するコールバック (まだ存在しない場合)。
nullすることはできません。
- factoryArgument
- TArg
呼び出し時に valueFactory に指定する追加の引数。
返品
メソッドの完了後、現在のConditionalWeakTable<TKey,TValue> インスタンスのTKeyにバインドされた値。
例外
key または valueFactory が null。
注釈
複数のスレッドが同じキーを初期化しようとすると、テーブルは同じキーで valueFactory 複数回呼び出すことができます。 これらの呼び出しのうち 1 つだけが成功し、その呼び出しの戻り値がテーブルに追加され、すべてのレーシング GetOrAdd<TArg>(TKey, Func<TKey,TArg,TValue>, TArg) 呼び出しによって返されます。 この規則により、テーブルは内部テーブル ロックの外部で valueFactory を呼び出して、デッドロックを防ぐことができます。