Kūrimo aplinka: .NET 4.0 arba naujesnė versija
Pastaba: System.Collections.Concurrent vardų sritis .NET Framework 4. Kaip ir MSDN dokumentacijoje, "ConcurrentDictionary" įdiegia saugią gijų kolekciją, kurią vienu metu gali pasiekti kelios gijos. ConcurrentDictionary įgyvendina IDictionary<TKey, TValue> ir turi keletą unikalių mechanizmų, skirtų pridėti, atnaujinti raktą / vertę. (Žemiau pateikiamas paaiškinimas, kada ir kokį metodą naudoti)
1 scenarijus: įtraukite naują elementą tik tuo atveju, jei rakto žodyne nėra... Naudokite "TryAdd". TryAdd priima raktą ir reikšmę, pridėtą prie žodyno, grąžina fasle, jei rakto žodyne nėra; Pateikia teisingą, jei yra. viešas bool TryAdd(TKey raktas, TValue vertė)
2 situacija: atnaujinkite esamą raktą žodyno reikšmėje... Naudokite "TryUpdate". Jei žodynas turi šį raktą ir pateikia sąlyginį atnaujinimą, jis turėtų pateikti šio metodo palyginimo vertę, kurią galima atnaujinti, kai dabartinė vertė yra lygi palyginimo vertei (TValue comparisonValue). viešas bool TryUpdate(TKey raktas, TValue newValue, TValue comparisonValue)
3 situacija: raktas / reikšmė turi būti įtraukta į žodyną; Jei raktas nėra tikras, ar jis yra žodyne; Jei yra, atnaujinkite Jei jo nėra, pridėkite jį...
Naudokite "AddOrUpdate". "AddOrUpdate" turi dvi perkrovas, o dvi perkrovos grąžina reikšmės reikšmę: Pirmasis perkrautas parametras yra AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>) Parametrai yra raktas ir du delegatai; Pirmojo atstovo tikslas yra perduoti, kai rakto nėra, ir grąžinti reikšmę (pradinę reikšmę) Šis delegavimas Func grąžina < pradinę reikšmę, raktą>. Antrasis atstovas Func < grąžina Value, key, oldValue> ir vykdo pirmąjį atstovą jei rakto nėra žodyne (jei jis yra, jis neveikia; Tikslas yra suteikti reikšmei pradinę reikšmę), o tada ji grąžins reikšmę (pradinę reikšmės reikšmę); Antrasis delegavimas yra vertės vertės keitimo metodas, kuriam taip pat reikalinga grąžinama vertė (pakeiskite pradinę reikšmę į galutinę vertę). Func < grąžinti > reikšmę, raktą, oldValue viešasis TValue AddOrUpdate (TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
2. Antrosios perkrovos parametras yra AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>) Pirmasis parametras yra raktas, antrasis yra tada, kai rakto nėra, ši reikšmė yra pradinė reikšmės reikšmė, o trečiasis yra deleguotas yra vykdyti pakeitimą (Func< grąžina reikšmę, raktą, oldValue>). viešasis TValue AddOrUpdate (TKey, TValue, Func<TKey, TValue, TValue>)
4 situacija: pridėkite rakto reikšmę į žodyną, bet jei raktas jau yra, išimkite reikšmę; Priešingu atveju jis bus pridėtas Pirmoji perkrova: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory) Pirmasis parametras yra raktas, antrasis parametras yra deleguotas Func<value, key>, kai rakto nėra, kintamasis perduodamas kaip raktas ir vertė keičiama. ir sukurkite raktą ir reikšmę, grąžindami reikšmės reikšmę.
2. Antroji perkrova: GetOrAdd (TKEY, TValue) Pirmasis parametras yra raktas, o antrojo parametro tikslas yra sukurti naują reikšmę, kurią suteikia raktas, kai jo nėra. Grąžina reikšmę. viešoji televizija GetOrAdd(TKEY, Func<TKey, TValue>valueFactory) viešoji televizija GetOrAdd(TKEY,TValue)
Kiekviena "AddOrUpdate" ir "GetOrAdd" operacija yra metodas, kurį "ConcurrentDictionary" turi modifikuoti / rašyti į žodyną, kuris užtikrina gijų saugumą (tai atliekama be užrakto, skaitant duomenis žodyne). |