SortedDictionary<TKey, TValue>.Item Property (TKey)


Gets or sets the value associated with the specified key.

Namespace:   System.Collections.Generic
Assembly:  System (in System.dll)

public TValue this[
	TKey key
] { get; set; }


Type: TKey

The key of the value to get or set.

Property Value

Type: TValue

The value associated with the specified key. If the specified key is not found, a get operation throws a KeyNotFoundException, and a set operation creates a new element with the specified key.

Exception Condition

key is null.


The property is retrieved and key does not exist in the collection.

This property provides the ability to access a specific element in the collection by using the following C# syntax: myCollection[key] (myCollection(key) in Visual Basic).

You can also use the Item property to add new elements by setting the value of a key that does not exist in the SortedDictionary<TKey, TValue>; for example, myCollection["myNonexistentKey"] = myValue. However, if the specified key already exists in the SortedDictionary<TKey, TValue>, setting the Item property overwrites the old value. In contrast, the Add method does not modify existing elements.

A key cannot be null, but a value can be, if the value type TValue is a reference type.

The C# language uses the keyword to define the indexers instead of implementing the Item property. Visual Basic implements Item as a default property, which provides the same indexing functionality.

Getting the value of this property is an O(log n) operation; setting the property is also an O(log n) operation.

The following code example uses the Item property (the indexer in C#) to retrieve values, demonstrating that a KeyNotFoundException is thrown when a requested key is not present, and showing that the value associated with a key can be replaced.

The example also shows how to use the TryGetValue method as a more efficient way to retrieve values if a program often must try key values that are not in the dictionary.

This code example is part of a larger example provided for the SortedDictionary<TKey, TValue> class.

// The Item property is another name for the indexer, so you 
// can omit its name when accessing elements. 
Console.WriteLine("For key = \"rtf\", value = {0}.", 

// The indexer can be used to change the value associated
// with a key.
openWith["rtf"] = "winword.exe";
Console.WriteLine("For key = \"rtf\", value = {0}.", 

// If a key does not exist, setting the indexer for that key
// adds a new key/value pair.
openWith["doc"] = "winword.exe";
// 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.");
// 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", out value))
    Console.WriteLine("For key = \"tif\", value = {0}.", value);
    Console.WriteLine("Key = \"tif\" is not found.");

Universal Windows Platform
Available since 8
.NET Framework
Available since 2.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top