Dictionary<TKey, TValue> Constructor (IDictionary<TKey, TValue>)
Initializes a new instance of the Dictionary<TKey, TValue> class that contains elements copied from the specified IDictionary<TKey, TValue> and uses the default equality comparer for the key type.
Namespace: System.Collections.Generic
Assembly: mscorlib (in mscorlib.dll)
Parameters
- dictionary
- Type: System.Collections.Generic.IDictionary<TKey, TValue>
The IDictionary<TKey, TValue> whose elements are copied to the new Dictionary<TKey, TValue>.
| Exception | Condition |
|---|---|
| ArgumentNullException | dictionary is null. |
| ArgumentException | dictionary contains one or more duplicate keys. |
Every key in a Dictionary<TKey, TValue> must be unique according to the default equality comparer; likewise, every key in the source dictionary must also be unique according to the default equality comparer.
The initial capacity of the new Dictionary<TKey, TValue> is large enough to contain all the elements in dictionary.
Dictionary<TKey, TValue> requires an equality implementation to determine whether keys are equal. This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.
This constructor is an O(n) operation, where n is the number of elements in dictionary.
The following code example shows how to use the Dictionary<TKey, TValue>(IEqualityComparer<TKey>) constructor to initialize a Dictionary<TKey, TValue> with sorted content from another dictionary. The code example creates a SortedDictionary<TKey, TValue> and populates it with data in random order, then passes the SortedDictionary<TKey, TValue> to the Dictionary<TKey, TValue>(IEqualityComparer<TKey>) constructor, creating a Dictionary<TKey, TValue> that is sorted. This is useful if you need to build a sorted dictionary that at some point becomes static; copying the data from a SortedDictionary<TKey, TValue> to a Dictionary<TKey, TValue> improves retrieval speed.
using System; using System.Collections.Generic; public class Example { public static void Main() { // Create a new sorted dictionary of strings, with string // keys. SortedDictionary<string, string> openWith = new SortedDictionary<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 Dictionary of strings with string keys, and // initialize it with the contents of the sorted dictionary. Dictionary<string, string> copy = new Dictionary<string, string>(openWith); // List the contents of the copy. Console.WriteLine(); 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 */
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.