Dictionary<TKey, TValue>::ContainsKey Method

Determines whether the Dictionary<TKey, TValue> contains the specified key.

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

virtual bool ContainsKey(
	TKey key
) sealed


Type: TKey

The key to locate in the Dictionary<TKey, TValue>.

Return Value

Type: System::Boolean
true if the Dictionary<TKey, TValue> contains an element with the specified key; otherwise, false.


IDictionary<TKey, TValue>::ContainsKey(TKey)
IReadOnlyDictionary<TKey, TValue>::ContainsKey(TKey)


key is nullptr.

This method approaches an O(1) operation.

The following code example shows how to use the ContainsKey method to test whether a key exists prior to calling the Add method. It also shows how to use the TryGetValue method to retrieve values, which is an efficient way to retrieve values when a program frequently tries keys that are not in the dictionary. Finally, it shows the least efficient way to test whether keys exist, by using the Item property (the indexer in C#).

This code example is part of a larger example provided for the Dictionary<TKey, TValue> class (openWith is the name of the Dictionary used in this example).

// ContainsKey can be used to test keys before inserting 
// them. 
if (!openWith->ContainsKey("ht"))
    openWith->Add("ht", "hypertrm.exe");
    Console::WriteLine("Value added for key = \"ht\": {0}",


// When a program often has to try keys that turn out not to 
// be in the dictionary, TryGetValue can be a more efficient 
// way to retrieve values.
String^ value = "";
if (openWith->TryGetValue("tif", value))
    Console::WriteLine("For key = \"tif\", value = {0}.", value);
    Console::WriteLine("Key = \"tif\" is not found.");


// The indexer throws an exception if the requested key is 
// not in the dictionary. 
    Console::WriteLine("For key = \"tif\", value = {0}.",
catch (KeyNotFoundException^)
    Console::WriteLine("Key = \"tif\" is not found.");

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
© 2015 Microsoft