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). |