ConditionalWeakTable<TKey,TValue>.GetOrAdd Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| GetOrAdd(TKey, Func<TKey,TValue>) |
Выполняет поиск указанного ключа в таблице и возвращает соответствующее значение. Если ключ не существует в таблице, метод вызывает указанную фабрику для создания значения, привязанного к указанному ключу. |
| GetOrAdd(TKey, TValue) |
Выполняет поиск указанного ключа в таблице и возвращает соответствующее значение. Если ключ не существует в таблице, метод добавляет заданное значение и привязывает его к указанному ключу. |
| GetOrAdd<TArg>(TKey, Func<TKey,TArg,TValue>, TArg) |
Выполняет поиск указанного ключа в таблице и возвращает соответствующее значение. Если ключ не существует в таблице, метод вызывает указанную фабрику для создания значения, привязанного к указанному ключу. |
GetOrAdd(TKey, Func<TKey,TValue>)
- Исходный код:
- ConditionalWeakTable.cs
- Исходный код:
- ConditionalWeakTable.cs
Выполняет поиск указанного ключа в таблице и возвращает соответствующее значение. Если ключ не существует в таблице, метод вызывает указанную фабрику для создания значения, привязанного к указанному ключу.
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.
Возвращаемое значение
Значение, привязанное к TKey текущему ConditionalWeakTable<TKey,TValue> экземпляру, после завершения метода.
Исключения
key или valueFactory есть null.
Комментарии
Если несколько потоков пытаются инициализировать один и тот же ключ, таблица может вызываться valueFactory несколько раз с одним и тем же ключом. Именно один из этих вызовов будет успешным, и возвращаемое значение этого вызова будет одним, добавленным в таблицу и возвращенным всеми гоночными GetOrAdd(TKey, Func<TKey,TValue>) звонками. Это правило позволяет таблице вызывать valueFactory за пределами внутренней блокировки таблицы, чтобы предотвратить взаимоблокировку.
Применяется к
GetOrAdd(TKey, TValue)
- Исходный код:
- ConditionalWeakTable.cs
- Исходный код:
- ConditionalWeakTable.cs
Выполняет поиск указанного ключа в таблице и возвращает соответствующее значение. Если ключ не существует в таблице, метод добавляет заданное значение и привязывает его к указанному ключу.
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, если оно еще не существует.
Возвращаемое значение
Значение, привязанное к TKey текущему ConditionalWeakTable<TKey,TValue> экземпляру, после завершения метода.
Исключения
key равно null.
Применяется к
GetOrAdd<TArg>(TKey, Func<TKey,TArg,TValue>, TArg)
- Исходный код:
- ConditionalWeakTable.cs
- Исходный код:
- ConditionalWeakTable.cs
Выполняет поиск указанного ключа в таблице и возвращает соответствующее значение. Если ключ не существует в таблице, метод вызывает указанную фабрику для создания значения, привязанного к указанному ключу.
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 при вызове.
Возвращаемое значение
Значение, привязанное к TKey текущему ConditionalWeakTable<TKey,TValue> экземпляру, после завершения метода.
Исключения
key или valueFactory есть null.
Комментарии
Если несколько потоков пытаются инициализировать один и тот же ключ, таблица может вызываться valueFactory несколько раз с одним и тем же ключом. Именно один из этих вызовов будет успешным, и возвращаемое значение этого вызова будет одним, добавленным в таблицу и возвращенным всеми гоночными GetOrAdd<TArg>(TKey, Func<TKey,TArg,TValue>, TArg) звонками. Это правило позволяет таблице вызывать valueFactory за пределами внутренней блокировки таблицы, чтобы предотвратить взаимоблокировку.