Izstrādes vide: .NET 4.0 vai jaunāka versija
Piezīme: System.Collections.Concurrent nosaukumvieta .NET Framework 4. Tāpat kā MSDN dokumentācijā, ConcurrentDictionary ievieš pavedienu drošu kolekciju, kurai vienlaikus var piekļūt vairāki pavedieni. ConcurrentDictionary ievieš IDictionary<TKey, TValue>, un tam ir daži unikāli mehānismi atslēgas/vērtības pievienošanai, atjaunināšanai. (Zemāk ir paskaidrojums par to, kad un kādu metodi izmantot)
1. scenārijs: pievienojiet jaunu vienumu tikai tad, ja atslēga vārdnīcā neeksistē... Izmantojiet TryAdd. TryAdd pieņem vārdnīcai pievienoto atslēgu un vērtību, atgriež fasle, ja atslēga vārdnīcā neeksistē; Atgriež patiesu, ja tāds ir. publiskais bool TryAdd(TKey atslēga, TValue vērtība)
2. situācija: atjauniniet esošo atslēgu vārdnīcas vērtībā... Izmantojiet TryUpdate. Ja vārdnīcai ir šī atslēga un tā sniedz nosacītu atjauninājumu, tai šajā metodē jānorāda salīdzinājuma vērtība, ko var atjaunināt, ja pašreizējā vērtība ir līdzvērtīga salīdzinājuma vērtībai (TValue comparisonValue). publiskais bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)
3. situācija: vārdnīcai jāpievieno atslēga/vērtība; Ja atslēga nav pārliecināta, vai tā pastāv vārdnīcā; Ja tas pastāv, atjauniniet Ja tas nepastāv, pievienojiet to...
Izmantojiet AddOrUpdate. AddOrUpdate ir divas pārslodzes, un divas pārslodzes atgriež vērtības vērtību: Pirmais pārslogotais parametrs ir AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>) Parametri ir atslēga un divi delegāti; Pirmā pārstāvja mērķis ir deleģēt, kad atslēgas nav, un atgriezt vērtību (sākotnējo vērtību) Šī deleģēšana Func atgriež < sākotnējo vērtību key>. Otrais pārstāvis Func < atgriež Value, key, oldValue> un izpilda pirmo pārstāvi, ja atslēgas vārdnīcā nav (ja tāda pastāv, tā nedarbojas; Mērķis ir piešķirt vērtībai sākotnējo vērtību), un tad tas atgriezīs vērtību (vērtības sākotnējo vērtību); Otrā deleģēšana ir vērtības vērtības maiņas metode, kurai nepieciešama arī atgriešanās vērtība (mainiet sākotnējo vērtību uz galīgo vērtību). Func < atgriezt > Value, key, oldValue publiskais TValue AddOrUpdate (TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
2. Otrās pārslodzes parametrs ir AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>) Pirmais parametrs ir atslēga, otrais ir tad, kad atslēga nepastāv, šī vērtība ir vērtības sākotnējā vērtība, un trešais ir deleģēts, lai izpildītu izmaiņas (Func< atgriež Value, key, oldValue>). publiskais TValue AddOrUpdate (TKey, TValue, Func<TKey, TValue, TValue>)
4. situācija: Pievienojiet atslēgas vērtību vārdnīcai, bet, ja atslēga jau pastāv, izņemiet vērtību; Pretējā gadījumā tas tiks pievienots Pirmā pārslodze: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory) Pirmais parametrs ir atslēga, otrais parametrs tiek deleģēts Func<value, key>, kad atslēga nepastāv, mainīgais tiek nodots kā atslēga, un vērtība tiek mainīta. un izveidojiet atslēgu un vērtību, atgriežot vērtības vērtību.
2. Otrā pārslodze: GetOrAdd (TKEY, TValue) Pirmais parametrs ir atslēga, un otrā parametra mērķis ir izveidot jaunu vērtību, ko dod atslēga, kad tā nepastāv. Atgriež vērtību. publiskais TValue GetOrAdd(TKEY,Func<TKey, TValue>valueFactory) publiskais TValue GetOrAdd(TKEY,TValue)
Katra AddOrUpdate un GetOrAdd darbība ir metode, kas ConcurrentDictionary ir vārdnīcas modificēšanai / rakstīšanai, kas nodrošina pavediena drošību (tas tiek darīts bez bloķēšanas veidā, lasot datus vārdnīcā). |