SortedDictionary<TKey, TValue> Constructor (IDictionary<TKey, TValue>)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Initializes a new instance of the SortedDictionary<TKey, TValue> class that contains elements copied from the specified IDictionary<TKey, TValue> and uses the default IComparer<T> implementation for the key type.

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

public SortedDictionary(
	IDictionary<TKey, TValue> dictionary


Type: System.Collections.Generic.IDictionary<TKey, TValue>

The IDictionary<TKey, TValue> whose elements are copied to the new SortedDictionary<TKey, TValue>.

Exception Condition

dictionary is null.


dictionary contains one or more duplicate keys.

Every key in a SortedDictionary<TKey, TValue> must be unique according to the default comparer; therefore, every key in the source dictionary must also be unique according to the default comparer.

SortedDictionary<TKey, TValue> requires a comparer implementation to perform key comparisons. This constructor uses the default generic equality comparer, Comparer<T>.Default. If type TKey implements the System.IComparable<T> generic interface, the default comparer uses that implementation. Alternatively, you can specify an implementation of the IComparer<T> generic interface by using a constructor that accepts a comparer parameter.

This constructor is an O(n log n) operation, where n is the number of elements in dictionary.

The following code example shows how to use SortedDictionary<TKey, TValue> to create a sorted copy of the information in a Dictionary<TKey, TValue>, by passing the Dictionary<TKey, TValue> to the SortedDictionary<TKey, TValue>(IComparer<TKey>) constructor.

using System;
using System.Collections.Generic;

public class Example
    public static void Main()
        // Create a new Dictionary of strings, with string keys.
        Dictionary<string, string> openWith = 
                                  new Dictionary<string, string>();

        // Add some elements to the dictionary. 
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // Create a SortedDictionary of strings with string keys, 
        // and initialize it with the contents of the Dictionary.
        SortedDictionary<string, string> copy = 
                  new SortedDictionary<string, string>(openWith);

        // List the contents of the copy.
        foreach( KeyValuePair<string, string> kvp in copy )
            Console.WriteLine("Key = {0}, Value = {1}", 
               kvp.Key, kvp.Value);

/* This code example produces the following output:

Key = bmp, Value = paint.exe
Key = dib, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe

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