Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 58026|Svar: 2

[Kilde] ConcurrentDictionary understøtter nye og opdaterede opdateringer

[Kopier link]
Opslået på 13/07/2016 11.12.05 | | |
Udviklingsmiljø: .NET 4.0 eller højere

Bemærk:
System.Collections.Concurrent navneområdet inden for .NET Framework 4.
Som i MSDN-dokumentationen implementerer ConcurrentDictionary en trådsikker samling, der kan tilgås af flere tråde på samme tid.
ConcurrentDictionary implementerer IDictionary<TKey, TValue>, og den har nogle unikke mekanismer til at tilføje og opdatere nøgle/værdi. (Nedenfor er en forklaring på, hvornår og hvilken metode du skal bruge)

Scenarie 1: Tilføj et nyt element, kun hvis nøglen ikke findes i ordbogen...
Brug TryAdd. TryAdd accepterer nøglen og værdien tilføjet til ordbogen, returnerer fasle hvis nøglen ikke findes i ordbogen; Returnerer sandt, hvis det er til stede.
offentlig bool TryAdd (TKey key, TValue value)

Situation 2: Opdater den eksisterende nøgle i ordbogens Værdi...
Brug TryUpdate. Hvis ordbogen har denne nøgle og giver en betinget opdatering, bør den give en sammenligningsværdi i denne metode, som kan opdateres, når den aktuelle værdi svarer til sammenligningsværdien (TValue comparisonValue).
public bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)


Situation 3: En nøgle/værdi skal tilføjes til ordbogen; Hvis nøglen ikke er sikker på, om den findes i ordbogen; Hvis det findes, opdater Hvis det ikke findes, tilføj det...

Brug AddOrUpdate. AddOrUpdate har to overloads, og de to overloads returnerer værdien af værdien:
Den første overbelastede parameter er AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
Parametrene er Key og to delegerede; Formålet med den første delegerede er at delegere, når nøglen ikke eksisterer, og returnere værdien (startværdien). Denne delegering Func returnerer < startværdi, nøgle>.
Den anden delegerede Func < returnerer Value, key, oldValue> og udfører den første delegerede, hvis nøglen ikke findes i ordbogen (hvis den findes, kører den ikke; Formålet er at give værdien startværdien), og derefter vil den returnere værdien (den oprindelige værdi af værdien); Den anden delegering er en metode til at ændre værdiværdien, hvilket også kræver returværdi (ændring af startværdien til den endelige værdi). Func < returnere > Value, key, oldValue
offentlig TValue AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)

                 2. Parameteren for den anden overbelastning er AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
Den første parameter er nøglen, den anden er, når nøglen ikke eksisterer, denne værdi er den oprindelige værdi af værdien, og den tredje er delegeret for at udføre ændringen (Func< returnerer Værdi, nøgle, oldValue>).
                      offentlig TValue AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)

Situation 4: Tilføj nøglens værdi til ordbogen, men hvis nøglen allerede eksisterer, fjern værdien; Ellers vil det blive tilføjet
Første overload: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory)
Den første parameter er nøgle, den anden parameter delegeres Func<værdi, nøgle>, når nøglen ikke eksisterer, gives en variabel som nøgle, og værdien ændres. og skabe en nøgle og værdi, der returnerer en værdiværdi.

       2. Anden Overbelastning: GetOrAdd (TKEY, TValue)
Den første parameter er nøgle, og formålet med den anden parameter er at skabe en ny værdi givet af nøglen, når den ikke eksisterer. Giver værdi tilbage.
public TValue GetOrAdd(TKEY,Func<TKey, TValue>valueFactory)
offentlige TValue GetOrAdd(TKEY,TValue)


Hver operation i AddOrUpdate og GetOrAdd er en metode, som ConcurrentDictionary har til at ændre/skrive til ordbogen, hvilket sikrer trådsikkerhed (det gøres på en låsløs måde, hvor data i ordbogen læses).




Tidligere:LINQ multi-betinget forespørgsel hvor betingelsen konstrueres
Næste:Windows under Memcachede grundlæggende operation-kommandoer
 Udlejer| Opslået på 13/09/2016 13.33.25 |
ConcurrentDictionary vs. Dictionary+Locking - Dennis Gao
http://www.itsvse.com/thread-3106-1-1.html
(Kilde: Code Agriculture Network)
 Udlejer| Opslået på 23/03/2021 11.32.18 |
Tilføj eller opdater

eller

Dokumentadresse:Hyperlink-login er synlig.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com