Entorno de desarrollo: .NET 4.0 o superior
Nota: El espacio de nombres System.Collections.Concurrent dentro de .NET Framework 4. Como en la documentación MSDN, ConcurrentDictionary implementa una colección segura de hilos que puede ser accedida por varios hilos al mismo tiempo. ConcurrentDictionary implementa IDictionary<TKey, TValue>, y cuenta con algunos mecanismos únicos para sumar y actualizar clave/valor. (A continuación se explica cuándo y qué método utilizar)
Escenario 1: Añadir un nuevo elemento, solo si la clave no existe en el diccionario... Usa TryAdd. TryAdd acepta la clave y el valor añadidos al diccionario, devuelve fasle si la clave no existe en el diccionario; Retorna verdadero si está presente. public bool TryAdd(clave TKey, valor TValue)
Situación 2: Actualizar la clave existente en el Valor... del diccionario... Usa TryUpdate. Si el diccionario tiene esta clave y ofrece una actualización condicional, debería dar un valor de comparación en este método que puede actualizarse cuando el valor actual sea equivalente al valor de comparación (TValue comparisonValue). public bool TryUpdate (clave TKey, TValue newValue, TValue comparisonValue)
Situación 3: Es necesario añadir una clave/valor al diccionario; Si la clave no está segura de si existe en el diccionario; Si existe, actualiza. Si no existe, añádela...
Usa AddOrUpdate. AddOrUpdate tiene dos sobrecargas, y las dos sobrecargas devolven el valor del valor: El primer parámetro sobrecargado es AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>) Los parámetros son Clave y dos delegados; El propósito del primer delegado es delegar cuando la clave no existe y devolver el valor (valor inicial). Esta función de delegación devuelve < valor inicial, clave>. La segunda función de delegado < devuelve Value, key, oldValue> y ejecuta el primer delegado si la clave no existe en el diccionario (si existe, no se ejecuta; El propósito es dar al valor el valor inicial), y luego devolverá el valor (el valor inicial del valor); La segunda delegación es un método para cambiar el valor del valor, que también requiere devolver el valor (cambiar el valor inicial por el valor final). Func < devolver el > Valor, clave, viejoValor Public TValue AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
2. El parámetro de la segunda sobrecarga es AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>) El primer parámetro es clave, el segundo es cuando la clave no existe, este valor es el valor inicial del valor, y el tercero es delegar para ejecutar el cambio (Func< devuelve Valor, clave, valor antiguo>). Public TValue AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
Situación 4: Añadir el valor de la clave al diccionario, pero si la clave ya existe, eliminar el valor; De lo contrario, se añadirá Primera sobrecarga: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory) El primer parámetro es clave, el segundo parámetro es Func<valor, clave>, cuando la clave no existe, se pasa una variable como clave y el valor cambia. y crear una clave y un valor, devolviendo un valor de valor.
2. Segunda sobrecarga: GetOrAdd (TKEY, TValue) El primer parámetro es clave, y el propósito del segundo parámetro es crear un nuevo valor dado por la clave cuando no existe. Devuelve el valor. Public TValue Getor Add(TKEY,Func<TKey, TValue>valueFactory) TV pública Getor Add(TKEY, TValue)
Cada operación de AddOrUpdate y GetOrAdd es un método que ConcurrentDictionary tiene para modificar o escribir en el diccionario, lo que garantiza la seguridad de los hilos (se hace de forma sin bloqueo, leyendo datos en el diccionario). |