Dictionary(Of TKey, TValue) Constructor (IDictionary(Of TKey, TValue))


Initializes a new instance of the Dictionary(Of TKey, TValue) class that contains elements copied from the specified IDictionary(Of TKey, TValue) and uses the default equality comparer for the key type.

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

Public Sub New (
	dictionary As IDictionary(Of TKey, TValue)


Type: System.Collections.Generic.IDictionary(Of TKey, TValue)

The IDictionary(Of TKey, TValue) whose elements are copied to the new Dictionary(Of TKey, TValue).

Exception Condition

dictionary is null.


dictionary contains one or more duplicate keys.

Every key in a Dictionary(Of 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(Of TKey, TValue) is large enough to contain all the elements in dictionary.

Dictionary(Of TKey, TValue) requires an equality implementation to determine whether keys are equal. This constructor uses the default generic equality comparer, EqualityComparer(Of T).Default. If type TKey implements the System.IEquatable(Of T) generic interface, the default equality comparer uses that implementation. Alternatively, you can specify an implementation of the IEqualityComparer(Of 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(Of TKey, TValue)(IEqualityComparer(Of TKey)) constructor to initialize a Dictionary(Of TKey, TValue) with sorted content from another dictionary. The code example creates a SortedDictionary(Of TKey, TValue) and populates it with data in random order, then passes the SortedDictionary(Of TKey, TValue) to the Dictionary(Of TKey, TValue)(IEqualityComparer(Of TKey)) constructor, creating a Dictionary(Of 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(Of TKey, TValue) to a Dictionary(Of TKey, TValue) improves retrieval speed.

Imports System
Imports System.Collections.Generic

Public Class Example

    Public Shared Sub Main() 

        ' Create a new sorted dictionary of strings, with string 
        ' keys.
        Dim openWith As New SortedDictionary(Of String, String)

        ' Add some elements to the sorted 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.
        Dim copy As New Dictionary(Of String, String)(openWith)

        ' List the contents of the copy.
        For Each kvp As KeyValuePair(Of String, String) In copy
            Console.WriteLine("Key = {0}, Value = {1}", _
                kvp.Key, kvp.Value)
        Next kvp

    End Sub

End Class

' 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
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top