This documentation is archived and is not being maintained.

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

Initializes a new instance of the SortedList<TKey, TValue> class that contains elements copied from the specified IDictionary<TKey, TValue>, has sufficient capacity to accommodate the number of elements copied, and uses the default IComparer<T>.

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

public SortedList(
	IDictionary<TKey, TValue> dictionary


Type: System.Collections.Generic.IDictionary<TKey, TValue>
The IDictionary<TKey, TValue> whose elements are copied to the new SortedList<TKey, TValue>.


dictionary is null.


dictionary contains one or more duplicate keys.

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

The capacity of the new SortedList<TKey, TValue> is set to the number of elements in dictionary, so no resizing takes place while the list is being populated.

This constructor uses the default comparer for TKey. To specify a comparer, use the SortedList<TKey, TValue>(IDictionary<TKey, TValue>, IComparer<TKey>) constructor. The default comparer Comparer<T>.Default checks whether the key type TKey implements System.IComparable<T> and uses that implementation, if available. If not, Comparer<T>.Default checks whether the key type TKey implements System.IComparable. If the key type TKey does not implement either interface, you can specify a System.Collections.Generic.IComparer<T> implementation in a constructor overload that accepts a comparer parameter.

If the data in dictionary are sorted, this constructor is an O(n) operation, where n is the number of elements in dictionary. Otherwise it is an O(n*n) operation.

The following code example shows how to use SortedList<TKey, TValue> to create a sorted copy of the information in a Dictionary<TKey, TValue>, by passing the Dictionary<TKey, TValue> to the SortedList<TKey, TValue>(IDictionary<TKey, TValue>) 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 SortedList of strings with string keys, 
        // and initialize it with the contents of the Dictionary.
        SortedList<string, string> copy = 
                  new SortedList<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

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.