Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

ConcurrentDictionary<TKey, TValue>.TryAdd Method

.NET Framework 4.6 and 4.5

Attempts to add the specified key and value to the System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue>.

Namespace:  System.Collections.Concurrent
Assemblies:   mscorlib (in mscorlib.dll)
  System.Collections.Concurrent (in System.Collections.Concurrent.dll)

public bool TryAdd(
	TKey key,
	TValue value
)

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.Boolean
true if the key/value pair was added to the System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue> successfully; false if the key already exists.

ExceptionCondition
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!");
        }
}

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1
Show:
© 2015 Microsoft