Середовище розробки: .NET 4.0 або вище
Примітка: Простір імен System.Collections.Concurrent у .NET Framework 4. Як і в документації MSDN, ConcurrentDictionary реалізує мережу, безпечну для потоків, до якої можна одночасно користуватися кількома потоками. ConcurrentDictionary реалізує IDictionary<TKey, TValue> і має унікальні механізми додавання, оновлення ключа/значення. (Нижче наведено пояснення, коли і який метод слід використовувати)
Сценарій 1: Додати новий елемент, лише якщо ключ не існує у словнику... Використовуйте TryAdd. TryAdd приймає доданий ключ і значення словника, повертає fasle, якщо ключ у словнику відсутній; Повертає істинність, якщо присутня. public bool TryAdd(TKey key, значення TValue)
Ситуація 2: Оновити існуючий ключ у словнику Значення... Використовуйте TryUpdate. Якщо словник має цей ключ і дає умовне оновлення, він повинен надати порівняльне значення в цьому методі, яке можна оновити, коли поточне значення еквівалентне порівняльному значенню (TValue comparValue). public bool TryUpdate(TKey key, TValue newValue, TValue comparValue)
Ситуація 3: До словника потрібно додати ключ/значення; Якщо ключ не впевнений, чи існує він у словнику; Якщо вона існує, оновіть Якщо його немає — додайте його...
Використовуйте AddOrUpdate. AddOrUpdate має два перевантаження, і ці два перевантаження повертають значення значення: Перший перевантажений параметр — AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>) Параметри: Ключ і два делегати; Мета першого делегата — делегувати, коли ключ не існує, і повернути значення (початкове значення). Ця делегація Func повертає < початкове значення, ключ>. Другий делегат Func < повертає Value, key, oldValue і виконує перший делегат> якщо ключ не існує у словнику (якщо він існує, він не виконується; Мета — надати значенню початкове значення), а потім воно поверне це значення (початкове значення); Друга делегація — це метод зміни значення значення, що також вимагає повернення значення (зміни початкового значення на кінце). Func < повернути > Значення, ключ, oldValue public TValue AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
2. Параметр другого перевантаження — AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>) Перший параметр — ключ, другий — коли ключ не існує, це значення — початкове значення значення, а третє — делегат для виконання зміни (Func< повертає Value, key, oldValue>). Публічне ТВалю Доповнення або Оновлення (TKey, TValue, Func<TKey, TValue, TValue>)
Ситуація 4: Додайте значення ключа до словника, але якщо ключ уже існує, видаліть значення; Інакше його додадуть Перше перевантаження: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory) Перший параметр — ключ, другий — делегований Func<value, key>, коли ключ не існує, змінна передається як ключ, і значення змінюється. і створити ключ і значення, повертаючи значення.
2. Друге перевантаження: GetOrAdd (TKEY, TValue) Перший параметр — ключ, а мета другого — створити нове значення, яке задається ключем, коли воно не існує. Повертає значення. публічне телебачення GetOrAdd(TKEY, Func<TKey, TValue>valueFactory) публічне телебачення GetOrAdd(TKEY, TValue)
Кожна операція AddOrUpdate та GetOrAdd — це метод, який ConcurrentDictionary використовує для модифікації/запису до словника, що забезпечує безпеку потоків (це відбувається без блокування, читаючи дані зі словника). |