ConcurrentDictionary<TKey, TValue>.TryAdd Method
Attempts to add the specified key and value to the System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue>.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- key
- Type: TKey
The key of the element to add.
- value
- Type: TValue
The value of the element to add. The value can be null for reference types.
Return Value
Type: System.Booleantrue if the key/value pair was added to the System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue> successfully; false if the key already exists.
| Exception | Condition |
|---|---|
| ArgumentNullException | key is null. |
| OverflowException | The dictionary already contains the maximum number of elements (MaxValue). |
This method returns false if the key already exists. Use the TryUpdate or AddOrUpdate method to update the value in case a key already exists.
The following example shows how to call the ConcurrentDictionary<TKey, TValue>.TryAddmethod:
class CD_TryXYZ { // Demonstrates: // ConcurrentDictionary<TKey, TValue>.TryAdd() // ConcurrentDictionary<TKey, TValue>.TryUpdate() // ConcurrentDictionary<TKey, TValue>.TryRemove() static void Main() { int numFailures = 0; // for bookkeeping // Construct an empty dictionary ConcurrentDictionary<int, String> cd = new ConcurrentDictionary<int, string>(); // This should work if (!cd.TryAdd(1, "one")) { Console.WriteLine("CD.TryAdd() failed when it should have succeeded"); numFailures++; } // This shouldn't work -- key 1 is already in use if (cd.TryAdd(1, "uno")) { Console.WriteLine("CD.TryAdd() succeeded when it should have failed"); numFailures++; } // Now change the value for key 1 from "one" to "uno" -- should work if (!cd.TryUpdate(1, "uno", "one")) { Console.WriteLine("CD.TryUpdate() failed when it should have succeeded"); numFailures++; } // Try to change the value for key 1 from "eine" to "one" // -- this shouldn't work, because the current value isn't "eine" if (cd.TryUpdate(1, "one", "eine")) { Console.WriteLine("CD.TryUpdate() succeeded when it should have failed"); numFailures++; } // Remove key/value for key 1. Should work. string value1; if (!cd.TryRemove(1, out value1)) { Console.WriteLine("CD.TryRemove() failed when it should have succeeded"); numFailures++; } // Remove key/value for key 1. Shouldn't work, because I already removed it string value2; if (cd.TryRemove(1, out value2)) { Console.WriteLine("CD.TryRemove() succeeded when it should have failed"); numFailures++; } // If nothing went wrong, say so if (numFailures == 0) Console.WriteLine(" OK!"); } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.