Hashtable Constructor (IDictionary)
Namespace: System.Collections
Assembly: mscorlib (in mscorlib.dll)
Parameters
- d
- Type: System.Collections.IDictionary
The IDictionary object to copy to a new Hashtable object.
| Exception | Condition |
|---|---|
| ArgumentNullException | d is Nothing. |
The initial capacity is set to the number of elements in the source dictionary. Capacity is automatically increased as required based on the load factor.
The load factor is the maximum ratio of elements to buckets. A smaller load factor means faster lookup at the cost of increased memory consumption.
When the actual load factor reaches the specified load factor, the number of buckets is automatically increased to the smallest prime number that is larger than twice the current number of buckets.
The hash code provider dispenses hash codes for keys in the Hashtable object. The default hash code provider is the key's implementation of Object.GetHashCode.
The comparer determines whether two keys are equal. Every key in a Hashtable must be unique. The default comparer is the key's implementation of Object.Equals.
The elements of the new Hashtable are sorted in the same order in which the enumerator iterates through the IDictionary object.
This constructor is an O(n) operation, where n is the number of elements in the d parameter.
The following code example creates hash tables using different Hashtable constructors and demonstrates the differences in the behavior of the hash tables, even if each one contains the same elements.
Imports System Imports System.Collections Imports System.Globalization Public Class myCultureComparer Implements IEqualityComparer Dim myComparer As CaseInsensitiveComparer Public Sub New() myComparer = CaseInsensitiveComparer.DefaultInvariant End Sub Public Sub New(ByVal myCulture As CultureInfo) myComparer = New CaseInsensitiveComparer(myCulture) End Sub Public Function Equals1(ByVal x As Object, ByVal y As Object) _ As Boolean Implements IEqualityComparer.Equals If (myComparer.Compare(x, y) = 0) Then Return True Else Return False End If End Function Public Function GetHashCode1(ByVal obj As Object) _ As Integer Implements IEqualityComparer.GetHashCode Return obj.ToString().ToLower().GetHashCode() End Function End Class Public Class SamplesHashtable Public Shared Sub Main() ' Create the dictionary. Dim mySL As New SortedList() mySL.Add("FIRST", "Hello") mySL.Add("SECOND", "World") mySL.Add("THIRD", "!") ' Create a hash table using the default comparer. Dim myHT1 As New Hashtable(mySL) ' Create a hash table using the specified IEqualityComparer that uses ' the CaseInsensitiveComparer.DefaultInvariant to determine equality. Dim myHT2 As New Hashtable(mySL, New myCultureComparer()) ' Create a hash table using an IEqualityComparer that is based on ' the Turkish culture (tr-TR) where "I" is not the uppercase ' version of "i". Dim myCul As New CultureInfo("tr-TR") Dim myHT3 As New Hashtable(mySL, New myCultureComparer(myCul)) ' Search for a key in each hash table. Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first")) Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first")) Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first")) End Sub 'Main End Class 'SamplesHashtable 'This code produces the following output. 'Results vary depending on the system's culture settings. ' 'first is in myHT1: False 'first is in myHT2: True 'first is in myHT3: False
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.