Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 58026|Atsakyti: 2

[Šaltinis] ConcurrentDictionary palaiko naujus ir atnaujintus naujinimus

[Kopijuoti nuorodą]
Paskelbta 2016-07-13 11:12:05 | | |
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).




Ankstesnis:LINQ daugiasąlyginė užklausa, kurioje sukonstruota sąlyga
Kitą:"Windows" žemiau "Memcached" pagrindinių operacijų komandų
 Savininkas| Paskelbta 2016-09-13 13:33:25 |
ConcurrentDictionary vs. Žodynas + Užrakinimas - Dennis Gao
http://www.itsvse.com/thread-3106-1-1.html
(Šaltinis: Code Agriculture Network)
 Savininkas| Paskelbta 2021-03-23 11:32:18 |
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com