Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo ConcurrentDictionary<TKey, TValue>.AddOrUpdate

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Aggiunge una coppia chiave/valore a ConcurrentDictionary<TKey, TValue>, se la chiave non esiste già, oppure aggiorna una coppia chiave/valore in ConcurrentDictionary<TKey, TValue>, se la chiave esiste già.

Spazio dei nomi:   System.Collections.Concurrent
Assembly:  mscorlib (in mscorlib.dll)

NomeDescrizione
System_CAPS_pubmethodAddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)

Aggiunge una coppia chiave/valore a ConcurrentDictionary<TKey, TValue>, se la chiave non esiste già, oppure aggiorna una coppia chiave/valore in ConcurrentDictionary<TKey, TValue> usando la funzione specificata, se la chiave esiste già.

System_CAPS_pubmethodAddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)

Usa le funzioni specificate per aggiungere una coppia chiave/valore a ConcurrentDictionary<TKey, TValue>, se la chiave non esiste già, oppure per aggiornare una coppia chiave/valore in ConcurrentDictionary<TKey, TValue> se la chiave esiste già.

Nell'esempio seguente viene illustrato come chiamare il AddOrUpdate metodo:

class CD_GetOrAddOrUpdate
{
    // Demonstrates:
    //      ConcurrentDictionary<TKey, TValue>.AddOrUpdate()
    //      ConcurrentDictionary<TKey, TValue>.GetOrAdd()
    //      ConcurrentDictionary<TKey, TValue>[]
    static void Main()
    {
        // Construct a ConcurrentDictionary
        ConcurrentDictionary<int, int> cd = new ConcurrentDictionary<int, int>();

        // Bombard the ConcurrentDictionary with 10000 competing AddOrUpdates
        Parallel.For(0, 10000, i =>
        {
            // Initial call will set cd[1] = 1.  
            // Ensuing calls will set cd[1] = cd[1] + 1
            cd.AddOrUpdate(1, 1, (key, oldValue) => oldValue + 1);
        });

        Console.WriteLine("After 10000 AddOrUpdates, cd[1] = {0}, should be 10000", cd[1]);

        // Should return 100, as key 2 is not yet in the dictionary
        int value = cd.GetOrAdd(2, (key) => 100);
        Console.WriteLine("After initial GetOrAdd, cd[2] = {0} (should be 100)", value);

        // Should return 100, as key 2 is already set to that value
        value = cd.GetOrAdd(2, 10000);
        Console.WriteLine("After second GetOrAdd, cd[2] = {0} (should be 100)", value);
    }
}
Torna all'inizio
Mostra: