Hashtable Konstruktoren

Definition

Initialisiert eine neue Instanz der Hashtable-Klasse.

Überlädt

Name Beschreibung
Hashtable()

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe der Standardkapazität, des Ladefaktors, des Hashcodeanbieters und des Vergleichs.

Hashtable(Int32, Single, IHashCodeProvider, IComparer)
Veraltet.

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe der angegebenen Anfangskapazität, des Ladefaktors, des Hashcodeanbieters und des Vergleichs.

Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
Veraltet.

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den angegebenen Ladefaktor, den Hashcodeanbieter und den Vergleich.

Hashtable(Int32, Single, IEqualityComparer)

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe der angegebenen Anfangskapazität, des Ladefaktors und IEqualityComparer des Objekts.

Hashtable(Int32, IHashCodeProvider, IComparer)
Veraltet.

Initialisiert eine neue, leere Instanz der Klasse mithilfe der Hashtable angegebenen Anfangskapazität, des Hashcodeanbieters, des Vergleichs und des Standardlastfaktors.

Hashtable(IDictionary, Single, IEqualityComparer)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den angegebenen Ladefaktor und IEqualityComparer das angegebene Objekt.

Hashtable(IDictionary, IHashCodeProvider, IComparer)
Veraltet.

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den Standardladefaktor und den angegebenen Hashcodeanbieter und -vergleicher. Diese API ist veraltet. Eine Alternative finden Sie unter Hashtable(IDictionary, IEqualityComparer).

Hashtable(Int32, Single)

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe des angegebenen Anfangskapazitäts- und Ladefaktors und des Standardmäßigen Hashcodeanbieters und -vergleichs.

Hashtable(SerializationInfo, StreamingContext)

Initialisiert eine neue, leere Instanz der Klasse, die mithilfe der Hashtable angegebenen SerializationInfo Objekte StreamingContext serialisierbar ist.

Hashtable(IHashCodeProvider, IComparer)
Veraltet.

Initialisiert eine neue, leere Instanz der Hashtable Klasse unter Verwendung des Standard-Anfangskapazitäts- und Lastfaktors und des angegebenen Hashcodeanbieters und -vergleichs.

Hashtable(IDictionary, Single)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den angegebenen Ladefaktor sowie den Standardhashcodeanbieter und -vergleicher.

Hashtable(IDictionary, IEqualityComparer)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in ein neues Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den Standardladefaktor und das angegebene IEqualityComparer Objekt.

Hashtable(Int32)

Initialisiert eine neue, leere Instanz der Klasse mithilfe der Hashtable angegebenen Anfangskapazität und des Standardlastfaktors, Hashcodeanbieters und Vergleichsmoduls.

Hashtable(IEqualityComparer)

Initialisiert eine neue, leere Instanz der Hashtable Klasse unter Verwendung der Standard-Anfangskapazität und des Lastfaktors und des angegebenen IEqualityComparer Objekts.

Hashtable(IDictionary)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den Standardladefaktor, den Hashcodeanbieter und den Vergleich.

Hashtable(Int32, IEqualityComparer)

Initialisiert eine neue, leere Instanz der Klasse mithilfe der Hashtable angegebenen Anfangskapazität und IEqualityComparerdes Standardlastfaktors.

Hashtable()

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe der Standardkapazität, des Ladefaktors, des Hashcodeanbieters und des Vergleichs.

public:
 Hashtable();
public Hashtable();
Public Sub New ()

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myComparer : IEqualityComparer
{
    public new bool Equals(object x, object y)
    {
        return x.Equals(y);
    }

    public int GetHashCode(object obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        return myComparer.Compare(x, y) == 0;
    }

    public int GetHashCode(object obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create a hash table using the default comparer.
        var myHT1 = new Hashtable();
        myHT1.Add("FIRST", "Hello");
        myHT1.Add("SECOND", "World");
        myHT1.Add("THIRD", "!");

        // Create a hash table using the specified IEqualityComparer that uses
        // the default Object.Equals to determine equality.
        var myHT2 = new Hashtable(new myComparer());
        myHT2.Add("FIRST", "Hello");
        myHT2.Add("SECOND", "World");
        myHT2.Add("THIRD", "!");

        // Create a hash table using a case-insensitive hash code provider and
        // case-insensitive comparer based on the InvariantCulture.
        Hashtable myHT3 = new Hashtable(
            CaseInsensitiveHashCodeProvider.DefaultInvariant,
            CaseInsensitiveComparer.DefaultInvariant);
        myHT3.Add("FIRST", "Hello");
        myHT3.Add("SECOND", "World");
        myHT3.Add("THIRD", "!");

        // 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".
        var myCul = new CultureInfo("tr-TR");
        var myHT4 = new Hashtable(new myCultureComparer(myCul));
        myHT4.Add("FIRST", "Hello");
        myHT4.Add("SECOND", "World");
        myHT4.Add("THIRD", "!");

        // Search for a key in each hash table.
        Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}");
    }
}


/*
This code produces the following output.
Results vary depending on the system's culture settings.

first is in myHT1: False
first is in myHT2: False
first is in myHT3: True
first is in myHT4: False

*/
Imports System.Collections
Imports System.Globalization

Public Class myComparer
    Implements IEqualityComparer
    Public Function Equals1(ByVal x As Object, ByVal y As Object) _
        As Boolean Implements IEqualityComparer.Equals

        Return x.Equals(y)
    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 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

        Return myComparer.Compare(x, y) = 0
    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 a hash table using the default comparer.
        Dim myHT1 As New Hashtable()
        myHT1.Add("FIRST", "Hello")
        myHT1.Add("SECOND", "World")
        myHT1.Add("THIRD", "!")

        ' Create a hash table using the specified IEqualityComparer that uses
        ' the default Object.Equals to determine equality.
        Dim myHT2 As New Hashtable(New myComparer())
        myHT2.Add("FIRST", "Hello")
        myHT2.Add("SECOND", "World")
        myHT2.Add("THIRD", "!")

        ' Create a hash table using a case-insensitive hash code provider and
        ' case-insensitive comparer based on the InvariantCulture.
        Dim myHT3 As New Hashtable( _
            CaseInsensitiveHashCodeProvider.DefaultInvariant, _
            CaseInsensitiveComparer.DefaultInvariant)
        myHT3.Add("FIRST", "Hello")
        myHT3.Add("SECOND", "World")
        myHT3.Add("THIRD", "!")

        ' 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 myHT4 As New Hashtable(New myCultureComparer(myCul))
        myHT4.Add("FIRST", "Hello")
        myHT4.Add("SECOND", "World")
        myHT4.Add("THIRD", "!")

        ' Search for a key in each hash table.
        Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
        Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
        Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
        Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}")

    End Sub

End Class

'This code produces the following output.
'Results vary depending on the system's culture settings.

'first is in myHT1: False
'first is in myHT2: False
'first is in myHT3: True
'first is in myHT4: False

Hinweise

Die Kapazität einer Hashtabelle wird verwendet, um die optimale Anzahl von Hashtabellen-Buckets basierend auf dem Ladefaktor zu berechnen. Die Kapazität wird bei Bedarf automatisch erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel im Hashtable Objekt aus. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dieser Konstruktor ist ein O(1) Vorgang.

Weitere Informationen

Gilt für:

Hashtable(Int32, Single, IHashCodeProvider, IComparer)

Achtung

Please use Hashtable(int, float, IEqualityComparer) instead.

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe der angegebenen Anfangskapazität, des Ladefaktors, des Hashcodeanbieters und des Vergleichs.

public:
 Hashtable(int capacity, float loadFactor, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")]
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : int * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)

Parameter

capacity
Int32

Die ungefähre Anzahl der Elemente, die das Hashtable Objekt anfänglich enthalten kann.

loadFactor
Single

Eine Zahl im Bereich von 0,1 bis 1,0, die mit dem Standardwert multipliziert wird, der die beste Leistung bietet. Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets.

hcp
IHashCodeProvider

Das IHashCodeProvider Objekt, das die Hashcodes für alle Schlüssel in der .Hashtable

-oder-

null um den Standardmäßigen Hashcodeanbieter zu verwenden, bei dem es sich um die Implementierung GetHashCode()jedes Schlüssels handelt.

comparer
IComparer

Das IComparer Objekt, das verwendet werden soll, um zu bestimmen, ob zwei Schlüssel gleich sind.

-oder-

null um den Standard-Comparer zu verwenden, bei dem es sich um die Implementierung Equals(Object)der einzelnen Schlüssel handelt.

Attribute

Ausnahmen

capacity ist kleiner als 0 (null).

-oder-

loadFactor ist kleiner als 0,1.

-oder-

loadFactor ist größer als 1,0.

Hinweise

Wenn Sie die anfängliche Kapazität angeben, müssen Sie beim Hinzufügen von Elementen zum Hashtable Objekt eine Reihe von Größenänderungsvorgängen ausführen. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung. Ein Lastfaktor von 1,0 ist das beste Gleichgewicht zwischen Geschwindigkeit und Größe.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Der benutzerdefinierte Hashcodeanbieter und der benutzerdefinierte Vergleich aktivieren Szenarien, z. B. Nachschlagevorgänge mit Zeichenfolgen ohne Groß-/Kleinschreibung.

Dieser Konstruktor ist ein O(n) Vorgang, bei dem n es sich um den capacity Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)

Achtung

Please use Hashtable(IDictionary, float, IEqualityComparer) instead.

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den angegebenen Ladefaktor, den Hashcodeanbieter und den Vergleich.

public:
 Hashtable(System::Collections::IDictionary ^ d, float loadFactor, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)

Parameter

d
IDictionary

Das IDictionary Objekt, das in ein neues Hashtable Objekt kopiert werden soll.

loadFactor
Single

Eine Zahl im Bereich von 0,1 bis 1,0, die mit dem Standardwert multipliziert wird, der die beste Leistung bietet. Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets.

hcp
IHashCodeProvider

Das IHashCodeProvider Objekt, das die Hashcodes für alle Schlüssel in der .Hashtable

-oder-

null um den Standardmäßigen Hashcodeanbieter zu verwenden, bei dem es sich um die Implementierung GetHashCode()jedes Schlüssels handelt.

comparer
IComparer

Das IComparer Objekt, das verwendet werden soll, um zu bestimmen, ob zwei Schlüssel gleich sind.

-oder-

null um den Standard-Comparer zu verwenden, bei dem es sich um die Implementierung Equals(Object)der einzelnen Schlüssel handelt.

Attribute

Ausnahmen

d ist null.

loadFactor ist kleiner als 0,1.

-oder-

loadFactor ist größer als 1,0.

Hinweise

Die anfängliche Kapazität wird auf die Anzahl der Elemente im Quellwörterbuch festgelegt. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung. Ein Lastfaktor von 1,0 ist das beste Gleichgewicht zwischen Geschwindigkeit und Größe.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel im Hashtable Objekt aus. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Der benutzerdefinierte Hashcodeanbieter und der benutzerdefinierte Vergleich aktivieren Szenarien, z. B. Nachschlagevorgänge mit Zeichenfolgen ohne Groß-/Kleinschreibung.

Die Elemente des Neuen Hashtable werden in derselben Reihenfolge sortiert, in der der Enumerator das IDictionary Objekt durchläuft.

Dieser Konstruktor ist ein O(n) Vorgang, wobei n es sich um die Anzahl der Elemente im d Parameter handelt.

Gilt für:

Hashtable(Int32, Single, IEqualityComparer)

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe der angegebenen Anfangskapazität, des Ladefaktors und IEqualityComparer des Objekts.

public:
 Hashtable(int capacity, float loadFactor, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(int capacity, float loadFactor, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : int * single * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single, equalityComparer As IEqualityComparer)

Parameter

capacity
Int32

Die ungefähre Anzahl der Elemente, die das Hashtable Objekt anfänglich enthalten kann.

loadFactor
Single

Eine Zahl im Bereich von 0,1 bis 1,0, die mit dem Standardwert multipliziert wird, der die beste Leistung bietet. Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets.

equalityComparer
IEqualityComparer

Das IEqualityComparer Objekt, das den Hashcodeanbieter und den Vergleich definiert, der mit der Hashtable.

-oder-

null um den Standardmäßigen Hashcodeanbieter und den Standardvergleich zu verwenden. Der Standardmäßige Hashcodeanbieter ist die Implementierung jedes GetHashCode() Schlüssels, und der Standardvergleich ist die Implementierung jedes Equals(Object)Schlüssels.

Ausnahmen

capacity ist kleiner als 0 (null).

-oder-

loadFactor ist kleiner als 0,1.

-oder-

loadFactor ist größer als 1,0.

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create a hash table using the default comparer.
        Hashtable myHT1 = new Hashtable(3, .8f);
        myHT1.Add("FIRST", "Hello");
        myHT1.Add("SECOND", "World");
        myHT1.Add("THIRD", "!");

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Hashtable myHT2 = new Hashtable(3, .8f, new myCultureComparer());
        myHT2.Add("FIRST", "Hello");
        myHT2.Add("SECOND", "World");
        myHT2.Add("THIRD", "!");

        // 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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(3, .8f, new myCultureComparer(myCul));

        myHT3.Add("FIRST", "Hello");
        myHT3.Add("SECOND", "World");
        myHT3.Add("THIRD", "!");

        // 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"));
    }
}


/*
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

*/
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 a hash table using the default comparer.
        Dim myHT1 As New Hashtable(3, System.Convert.ToSingle(0.8))
        myHT1.Add("FIRST", "Hello")
        myHT1.Add("SECOND", "World")
        myHT1.Add("THIRD", "!")

        ' Create a hash table using the specified IEqualityComparer that uses
        ' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Dim myHT2 As New Hashtable(3, System.Convert.ToSingle(0.8), _
            New myCultureComparer())

        myHT2.Add("FIRST", "Hello")
        myHT2.Add("SECOND", "World")
        myHT2.Add("THIRD", "!")

        ' 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(3, System.Convert.ToSingle(0.8), _
            New myCultureComparer(myCul))

        myHT3.Add("FIRST", "Hello")
        myHT3.Add("SECOND", "World")
        myHT3.Add("THIRD", "!")

        ' 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

End Class


'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

Hinweise

Wenn Sie die anfängliche Kapazität angeben, müssen Sie beim Hinzufügen von Elementen zum Hashtable Objekt eine Reihe von Größenänderungsvorgängen ausführen. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung. Ein Lastfaktor von 1,0 ist das beste Gleichgewicht zwischen Geschwindigkeit und Größe.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Das IEqualityComparer Objekt enthält sowohl den Hashcodeanbieter als auch den Comparer. Wenn ein IEqualityComparer Objekt im Hashtable Konstruktor verwendet wird, müssen die objekte, die als Schlüssel in der Hashtable Konstruktor verwendet werden, nicht außer Kraft setzen.Object.GetHashCodeObject.Equals

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dies IEqualityComparer ermöglicht Szenarien wie das Ausführen von Nachschlagevorgängen mit Zeichenfolgen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.

Dieser Konstruktor ist ein O(n) Vorgang, bei dem n es sich um den capacity Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(Int32, IHashCodeProvider, IComparer)

Achtung

Please use Hashtable(int, IEqualityComparer) instead.

Initialisiert eine neue, leere Instanz der Klasse mithilfe der Hashtable angegebenen Anfangskapazität, des Hashcodeanbieters, des Vergleichs und des Standardlastfaktors.

public:
 Hashtable(int capacity, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(int capacity, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(int, IEqualityComparer) instead.")]
public Hashtable(int capacity, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : int * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(int, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, hcp As IHashCodeProvider, comparer As IComparer)

Parameter

capacity
Int32

Die ungefähre Anzahl der Elemente, die das Hashtable Objekt anfänglich enthalten kann.

hcp
IHashCodeProvider

Das IHashCodeProvider Objekt, das die Hashcodes für alle Schlüssel in der .Hashtable

-oder-

null um den Standardmäßigen Hashcodeanbieter zu verwenden, bei dem es sich um die Implementierung GetHashCode()jedes Schlüssels handelt.

comparer
IComparer

Das IComparer Objekt, das verwendet werden soll, um zu bestimmen, ob zwei Schlüssel gleich sind.

-oder-

null um den Standard-Comparer zu verwenden, bei dem es sich um die Implementierung Equals(Object)der einzelnen Schlüssel handelt.

Attribute

Ausnahmen

capacity ist kleiner als 0 (null).

Hinweise

Wenn Sie die anfängliche Kapazität angeben, müssen Sie beim Hinzufügen von Elementen zum Hashtable Objekt eine Reihe von Größenänderungsvorgängen ausführen. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Der benutzerdefinierte Hashcodeanbieter und der benutzerdefinierte Vergleich aktivieren Szenarien, z. B. Nachschlagevorgänge mit Zeichenfolgen ohne Groß-/Kleinschreibung.

Dieser Konstruktor ist ein O(n) Vorgang, bei dem n es sich um den capacity Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(IDictionary, Single, IEqualityComparer)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den angegebenen Ladefaktor und IEqualityComparer das angegebene Objekt.

public:
 Hashtable(System::Collections::IDictionary ^ d, float loadFactor, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single, equalityComparer As IEqualityComparer)

Parameter

d
IDictionary

Das IDictionary Objekt, das in ein neues Hashtable Objekt kopiert werden soll.

loadFactor
Single

Eine Zahl im Bereich von 0,1 bis 1,0, die mit dem Standardwert multipliziert wird, der die beste Leistung bietet. Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets.

equalityComparer
IEqualityComparer

Das IEqualityComparer Objekt, das den Hashcodeanbieter und den Vergleich definiert, der mit der Hashtable.

-oder-

null um den Standardmäßigen Hashcodeanbieter und den Standardvergleich zu verwenden. Der Standardmäßige Hashcodeanbieter ist die Implementierung jedes GetHashCode() Schlüssels, und der Standardvergleich ist die Implementierung jedes Equals(Object)Schlüssels.

Ausnahmen

d ist null.

loadFactor ist kleiner als 0,1.

-oder-

loadFactor ist größer als 1,0.

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create the dictionary.
        SortedList mySL = new SortedList();
        mySL.Add("FIRST", "Hello");
        mySL.Add("SECOND", "World");
        mySL.Add("THIRD", "!");

        // Create a hash table using the default comparer.
        Hashtable myHT1 = new Hashtable(mySL, .8f);

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Hashtable myHT2 = new Hashtable(mySL, .8f,
            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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(mySL, .8f, 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"));
    }
}


/*
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

*/
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, System.Convert.ToSingle(0.8))

      ' Create a hash table using the specified IEqualityComparer that uses
      ' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
      Dim myHT2 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
        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, System.Convert.ToSingle(0.8), _
        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

End Class


'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

Hinweise

Die anfängliche Kapazität wird auf die Anzahl der Elemente im Quellwörterbuch festgelegt. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung. Ein Lastfaktor von 1,0 ist das beste Gleichgewicht zwischen Geschwindigkeit und Größe.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Das IEqualityComparer Objekt enthält sowohl den Hashcodeanbieter als auch den Comparer. Wenn ein IEqualityComparer Objekt im Hashtable Konstruktor verwendet wird, müssen die Objekte, die als Schlüssel im Hashtable Objekt verwendet werden, nicht außer Kraft setzen.Object.GetHashCodeObject.Equals

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dies IEqualityComparer ermöglicht Szenarien wie das Ausführen von Nachschlagevorgängen mit Zeichenfolgen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.

Die Elemente des Neuen Hashtable werden in derselben Reihenfolge sortiert, in der der Enumerator das IDictionary Objekt durchläuft.

Dieser Konstruktor ist ein O(n) Vorgang, wobei n es sich um die Anzahl der Elemente im d Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(IDictionary, IHashCodeProvider, IComparer)

Achtung

Please use Hashtable(IDictionary, IEqualityComparer) instead.

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den Standardladefaktor und den angegebenen Hashcodeanbieter und -vergleicher. Diese API ist veraltet. Eine Alternative finden Sie unter Hashtable(IDictionary, IEqualityComparer).

public:
 Hashtable(System::Collections::IDictionary ^ d, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(IDictionary, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IDictionary, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, hcp As IHashCodeProvider, comparer As IComparer)

Parameter

d
IDictionary

Das IDictionary Objekt, das in ein neues Hashtable Objekt kopiert werden soll.

hcp
IHashCodeProvider

Das IHashCodeProvider Objekt, das die Hashcodes für alle Schlüssel in der .Hashtable

-oder-

null um den Standardmäßigen Hashcodeanbieter zu verwenden, bei dem es sich um die Implementierung GetHashCode()jedes Schlüssels handelt.

comparer
IComparer

Das IComparer Objekt, das verwendet werden soll, um zu bestimmen, ob zwei Schlüssel gleich sind.

-oder-

null um den Standard-Comparer zu verwenden, bei dem es sich um die Implementierung Equals(Object)der einzelnen Schlüssel handelt.

Attribute

Ausnahmen

d ist null.

Hinweise

Die anfängliche Kapazität wird auf die Anzahl der Elemente im Quellwörterbuch festgelegt. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel im Hashtable Objekt aus. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Der benutzerdefinierte Hashcodeanbieter und der benutzerdefinierte Vergleich aktivieren Szenarien, z. B. Nachschlagevorgänge mit Zeichenfolgen ohne Groß-/Kleinschreibung.

Die Elemente des Neuen Hashtable werden in derselben Reihenfolge sortiert, in der der Enumerator das IDictionary Objekt durchläuft.

Dieser Konstruktor ist ein O(n) Vorgang, wobei n es sich um die Anzahl der Elemente im d Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(Int32, Single)

Initialisiert eine neue, leere Instanz der Hashtable Klasse mithilfe des angegebenen Anfangskapazitäts- und Ladefaktors und des Standardmäßigen Hashcodeanbieters und -vergleichs.

public:
 Hashtable(int capacity, float loadFactor);
public Hashtable(int capacity, float loadFactor);
new System.Collections.Hashtable : int * single -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single)

Parameter

capacity
Int32

Die ungefähre Anzahl der Elemente, die das Hashtable Objekt anfänglich enthalten kann.

loadFactor
Single

Eine Zahl im Bereich von 0,1 bis 1,0, die mit dem Standardwert multipliziert wird, der die beste Leistung bietet. Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets.

Ausnahmen

capacity ist kleiner als 0 (null).

-oder-

loadFactor ist kleiner als 0,1.

-oder-

loadFactor ist größer als 1,0.

capacity verursacht einen Überlauf.

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create a hash table using the default comparer.
        Hashtable myHT1 = new Hashtable(3, .8f);
        myHT1.Add("FIRST", "Hello");
        myHT1.Add("SECOND", "World");
        myHT1.Add("THIRD", "!");

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Hashtable myHT2 = new Hashtable(3, .8f, new myCultureComparer());
        myHT2.Add("FIRST", "Hello");
        myHT2.Add("SECOND", "World");
        myHT2.Add("THIRD", "!");

        // 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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(3, .8f, new myCultureComparer(myCul));

        myHT3.Add("FIRST", "Hello");
        myHT3.Add("SECOND", "World");
        myHT3.Add("THIRD", "!");

        // 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"));
    }
}


/*
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

*/
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 a hash table using the default comparer.
        Dim myHT1 As New Hashtable(3, System.Convert.ToSingle(0.8))
        myHT1.Add("FIRST", "Hello")
        myHT1.Add("SECOND", "World")
        myHT1.Add("THIRD", "!")

        ' Create a hash table using the specified IEqualityComparer that uses
        ' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Dim myHT2 As New Hashtable(3, System.Convert.ToSingle(0.8), _
            New myCultureComparer())

        myHT2.Add("FIRST", "Hello")
        myHT2.Add("SECOND", "World")
        myHT2.Add("THIRD", "!")

        ' 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(3, System.Convert.ToSingle(0.8), _
            New myCultureComparer(myCul))

        myHT3.Add("FIRST", "Hello")
        myHT3.Add("SECOND", "World")
        myHT3.Add("THIRD", "!")

        ' 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

End Class


'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

Hinweise

Wenn Sie die anfängliche Kapazität angeben, müssen Sie beim Hinzufügen von Elementen zum Hashtable Objekt eine Reihe von Größenänderungsvorgängen ausführen. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung. Ein Lastfaktor von 1,0 ist das beste Gleichgewicht zwischen Geschwindigkeit und Größe.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dieser Konstruktor ist ein O(n) Vorgang, bei dem n es sich um den capacity Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(SerializationInfo, StreamingContext)

Initialisiert eine neue, leere Instanz der Klasse, die mithilfe der Hashtable angegebenen SerializationInfo Objekte StreamingContext serialisierbar ist.

protected:
 Hashtable(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
protected Hashtable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Collections.Hashtable : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Hashtable
Protected Sub New (info As SerializationInfo, context As StreamingContext)

Parameter

info
SerializationInfo

Ein SerializationInfo Objekt, das die zum Serialisieren des Hashtable Objekts erforderlichen Informationen enthält.

context
StreamingContext

Ein StreamingContext Objekt, das die Quelle und das Ziel des serialisierten Datenstroms enthält, der dem Hashtablezugeordnet ist.

Ausnahmen

info ist null.

Hinweise

Die Kapazität einer Hashtabelle wird verwendet, um die optimale Anzahl von Hashtabellen-Buckets basierend auf dem Ladefaktor zu berechnen. Die Kapazität wird bei Bedarf automatisch erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel im Hashtable Objekt aus. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dieser Konstruktor ist ein Vorgang, bei dem O(n) es sich um einen n Vorgang handeltCount.

Da die Serialisierung und Deserialisierung eines Enumerators für ein Hashtable Element dazu führen kann, dass die Elemente neu angeordnet werden, ist es nicht möglich, die Enumeration fortzusetzen, ohne die Reset Methode aufzurufen.

Weitere Informationen

Gilt für:

Hashtable(IHashCodeProvider, IComparer)

Achtung

Please use Hashtable(IEqualityComparer) instead.

Initialisiert eine neue, leere Instanz der Hashtable Klasse unter Verwendung des Standard-Anfangskapazitäts- und Lastfaktors und des angegebenen Hashcodeanbieters und -vergleichs.

public:
 Hashtable(System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(IEqualityComparer) instead.")]
public Hashtable(System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (hcp As IHashCodeProvider, comparer As IComparer)

Parameter

hcp
IHashCodeProvider

Das IHashCodeProvider Objekt, das die Hashcodes für alle Schlüssel im Hashtable Objekt bereitstellt.

-oder-

null um den Standardmäßigen Hashcodeanbieter zu verwenden, bei dem es sich um die Implementierung GetHashCode()jedes Schlüssels handelt.

comparer
IComparer

Das IComparer Objekt, das verwendet werden soll, um zu bestimmen, ob zwei Schlüssel gleich sind.

-oder-

null um den Standard-Comparer zu verwenden, bei dem es sich um die Implementierung Equals(Object)der einzelnen Schlüssel handelt.

Attribute

Hinweise

Die Kapazität einer Hashtabelle wird verwendet, um die optimale Anzahl von Hashtabellen-Buckets basierend auf dem Ladefaktor zu berechnen. Die Kapazität wird bei Bedarf automatisch erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel im Hashtable Objekt aus. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Der benutzerdefinierte Hashcodeanbieter und der benutzerdefinierte Vergleich aktivieren Szenarien, z. B. Nachschlagevorgänge mit Zeichenfolgen ohne Groß-/Kleinschreibung.

Dieser Konstruktor ist ein O(1) Vorgang.

Weitere Informationen

Gilt für:

Hashtable(IDictionary, Single)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den angegebenen Ladefaktor sowie den Standardhashcodeanbieter und -vergleicher.

public:
 Hashtable(System::Collections::IDictionary ^ d, float loadFactor);
public Hashtable(System.Collections.IDictionary d, float loadFactor);
new System.Collections.Hashtable : System.Collections.IDictionary * single -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single)

Parameter

d
IDictionary

Das IDictionary Objekt, das in ein neues Hashtable Objekt kopiert werden soll.

loadFactor
Single

Eine Zahl im Bereich von 0,1 bis 1,0, die mit dem Standardwert multipliziert wird, der die beste Leistung bietet. Das Ergebnis ist das maximale Verhältnis von Elementen zu Buckets.

Ausnahmen

d ist null.

loadFactor ist kleiner als 0,1.

-oder-

loadFactor ist größer als 1,0.

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create the dictionary.
        SortedList mySL = new SortedList();
        mySL.Add("FIRST", "Hello");
        mySL.Add("SECOND", "World");
        mySL.Add("THIRD", "!");

        // Create a hash table using the default comparer.
        Hashtable myHT1 = new Hashtable(mySL, .8f);

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Hashtable myHT2 = new Hashtable(mySL, .8f,
            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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(mySL, .8f, 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"));
    }
}


/*
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

*/
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, System.Convert.ToSingle(0.8))

      ' Create a hash table using the specified IEqualityComparer that uses
      ' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
      Dim myHT2 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
        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, System.Convert.ToSingle(0.8), _
        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

End Class


'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

Hinweise

Die anfängliche Kapazität wird auf die Anzahl der Elemente im Quellwörterbuch festgelegt. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung. Ein Lastfaktor von 1,0 ist das beste Gleichgewicht zwischen Geschwindigkeit und Größe.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel im Hashtable Objekt aus. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Die Elemente des Neuen Hashtable werden in derselben Reihenfolge sortiert, in der der Enumerator das IDictionary Objekt durchläuft.

Dieser Konstruktor ist ein O(n) Vorgang, wobei n es sich um die Anzahl der Elemente im d Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(IDictionary, IEqualityComparer)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in ein neues Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den Standardladefaktor und das angegebene IEqualityComparer Objekt.

public:
 Hashtable(System::Collections::IDictionary ^ d, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IDictionary d, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, equalityComparer As IEqualityComparer)

Parameter

d
IDictionary

Das IDictionary Objekt, das in ein neues Hashtable Objekt kopiert werden soll.

equalityComparer
IEqualityComparer

Das IEqualityComparer Objekt, das den Hashcodeanbieter und den Vergleich definiert, der mit der Hashtable.

-oder-

null um den Standardmäßigen Hashcodeanbieter und den Standardvergleich zu verwenden. Der Standardmäßige Hashcodeanbieter ist die Implementierung jedes GetHashCode() Schlüssels, und der Standardvergleich ist die Implementierung jedes Equals(Object)Schlüssels.

Ausnahmen

d ist null.

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        return myComparer.Compare(x, y) == 0;
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create the dictionary.
        var mySL = new SortedList();
        mySL.Add("FIRST", "Hello");
        mySL.Add("SECOND", "World");
        mySL.Add("THIRD", "!");

        // Create a hash table using the default comparer.
        var myHT1 = new Hashtable(mySL);

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        var myHT2 = 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".
        var myCul = new CultureInfo("tr-TR");
        var myHT3 = new Hashtable(mySL, new myCultureComparer(myCul));

        // Search for a key in each hash table.
        Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
    }
}


/*
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

*/
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

        Return myComparer.Compare(x, y) = 0
    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: {myHT1.ContainsKey("first")}")
      Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
      Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")

   End Sub

End Class


'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

Hinweise

Die anfängliche Kapazität wird auf die Anzahl der Elemente im Quellwörterbuch festgelegt. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Das IEqualityComparer Objekt enthält sowohl den Hashcodeanbieter als auch den Comparer. Wenn ein IEqualityComparer Objekt im Hashtable Konstruktor verwendet wird, müssen die Objekte, die als Schlüssel im Hashtable Objekt verwendet werden, nicht außer Kraft setzen.Object.GetHashCodeObject.Equals

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dies IEqualityComparer ermöglicht Szenarien wie das Ausführen von Nachschlagevorgängen mit Zeichenfolgen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.

Die Elemente des Neuen Hashtable werden in derselben Reihenfolge sortiert, in der der Enumerator das IDictionary Objekt durchläuft.

Dieser Konstruktor ist ein O(n) Vorgang, wobei n es sich um die Anzahl der Elemente im d Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(Int32)

Initialisiert eine neue, leere Instanz der Klasse mithilfe der Hashtable angegebenen Anfangskapazität und des Standardlastfaktors, Hashcodeanbieters und Vergleichsmoduls.

public:
 Hashtable(int capacity);
public Hashtable(int capacity);
new System.Collections.Hashtable : int -> System.Collections.Hashtable
Public Sub New (capacity As Integer)

Parameter

capacity
Int32

Die ungefähre Anzahl der Elemente, die das Hashtable Objekt anfänglich enthalten kann.

Ausnahmen

capacity ist kleiner als 0 (null).

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create a hash table using the default comparer.
        Hashtable myHT1 = new Hashtable(3);
        myHT1.Add("FIRST", "Hello");
        myHT1.Add("SECOND", "World");
        myHT1.Add("THIRD", "!");

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Hashtable myHT2 = new Hashtable(3, new myCultureComparer());
        myHT2.Add("FIRST", "Hello");
        myHT2.Add("SECOND", "World");
        myHT2.Add("THIRD", "!");

        // 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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(3, new myCultureComparer(myCul));
        myHT3.Add("FIRST", "Hello");
        myHT3.Add("SECOND", "World");
        myHT3.Add("THIRD", "!");

        // 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"));
    }
}


/*
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

*/
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 a hash table using the default comparer.
      Dim myHT1 As New Hashtable(3)
      myHT1.Add("FIRST", "Hello")
      myHT1.Add("SECOND", "World")
      myHT1.Add("THIRD", "!")

      ' Create a hash table using the specified IEqualityComparer that uses
      ' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
      Dim myHT2 As New Hashtable(3, New myCultureComparer())
      myHT2.Add("FIRST", "Hello")
      myHT2.Add("SECOND", "World")
      myHT2.Add("THIRD", "!")

      ' 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(3, New myCultureComparer(myCul))
      myHT3.Add("FIRST", "Hello")
      myHT3.Add("SECOND", "World")
      myHT3.Add("THIRD", "!")

      ' 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

End Class


'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

Hinweise

Wenn Sie die anfängliche Kapazität angeben, müssen Sie beim Hinzufügen von Elementen zum Hashtable Objekt eine Reihe von Größenänderungsvorgängen ausführen. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dieser Konstruktor ist ein Vorgang, bei dem O(n) es sich um einen n Vorgang handeltcapacity.

Weitere Informationen

Gilt für:

Hashtable(IEqualityComparer)

Initialisiert eine neue, leere Instanz der Hashtable Klasse unter Verwendung der Standard-Anfangskapazität und des Lastfaktors und des angegebenen IEqualityComparer Objekts.

public:
 Hashtable(System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (equalityComparer As IEqualityComparer)

Parameter

equalityComparer
IEqualityComparer

Das IEqualityComparer Objekt, das den Hashcodeanbieter und den Vergleich definiert, der mit dem Hashtable Objekt verwendet werden soll.

-oder-

null um den Standardmäßigen Hashcodeanbieter und den Standardvergleich zu verwenden. Der Standardmäßige Hashcodeanbieter ist die Implementierung jedes GetHashCode() Schlüssels, und der Standardvergleich ist die Implementierung jedes Equals(Object)Schlüssels.

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myComparer : IEqualityComparer
{
    public new bool Equals(object x, object y)
    {
        return x.Equals(y);
    }

    public int GetHashCode(object obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        return myComparer.Compare(x, y) == 0;
    }

    public int GetHashCode(object obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create a hash table using the default comparer.
        var myHT1 = new Hashtable();
        myHT1.Add("FIRST", "Hello");
        myHT1.Add("SECOND", "World");
        myHT1.Add("THIRD", "!");

        // Create a hash table using the specified IEqualityComparer that uses
        // the default Object.Equals to determine equality.
        var myHT2 = new Hashtable(new myComparer());
        myHT2.Add("FIRST", "Hello");
        myHT2.Add("SECOND", "World");
        myHT2.Add("THIRD", "!");

        // Create a hash table using a case-insensitive hash code provider and
        // case-insensitive comparer based on the InvariantCulture.
        Hashtable myHT3 = new Hashtable(
            CaseInsensitiveHashCodeProvider.DefaultInvariant,
            CaseInsensitiveComparer.DefaultInvariant);
        myHT3.Add("FIRST", "Hello");
        myHT3.Add("SECOND", "World");
        myHT3.Add("THIRD", "!");

        // 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".
        var myCul = new CultureInfo("tr-TR");
        var myHT4 = new Hashtable(new myCultureComparer(myCul));
        myHT4.Add("FIRST", "Hello");
        myHT4.Add("SECOND", "World");
        myHT4.Add("THIRD", "!");

        // Search for a key in each hash table.
        Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}");
    }
}


/*
This code produces the following output.
Results vary depending on the system's culture settings.

first is in myHT1: False
first is in myHT2: False
first is in myHT3: True
first is in myHT4: False

*/
Imports System.Collections
Imports System.Globalization

Public Class myComparer
    Implements IEqualityComparer
    Public Function Equals1(ByVal x As Object, ByVal y As Object) _
        As Boolean Implements IEqualityComparer.Equals

        Return x.Equals(y)
    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 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

        Return myComparer.Compare(x, y) = 0
    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 a hash table using the default comparer.
        Dim myHT1 As New Hashtable()
        myHT1.Add("FIRST", "Hello")
        myHT1.Add("SECOND", "World")
        myHT1.Add("THIRD", "!")

        ' Create a hash table using the specified IEqualityComparer that uses
        ' the default Object.Equals to determine equality.
        Dim myHT2 As New Hashtable(New myComparer())
        myHT2.Add("FIRST", "Hello")
        myHT2.Add("SECOND", "World")
        myHT2.Add("THIRD", "!")

        ' Create a hash table using a case-insensitive hash code provider and
        ' case-insensitive comparer based on the InvariantCulture.
        Dim myHT3 As New Hashtable( _
            CaseInsensitiveHashCodeProvider.DefaultInvariant, _
            CaseInsensitiveComparer.DefaultInvariant)
        myHT3.Add("FIRST", "Hello")
        myHT3.Add("SECOND", "World")
        myHT3.Add("THIRD", "!")

        ' 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 myHT4 As New Hashtable(New myCultureComparer(myCul))
        myHT4.Add("FIRST", "Hello")
        myHT4.Add("SECOND", "World")
        myHT4.Add("THIRD", "!")

        ' Search for a key in each hash table.
        Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
        Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
        Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
        Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}")

    End Sub

End Class

'This code produces the following output.
'Results vary depending on the system's culture settings.

'first is in myHT1: False
'first is in myHT2: False
'first is in myHT3: True
'first is in myHT4: False

Hinweise

Die Kapazität einer Hashtabelle wird verwendet, um die optimale Anzahl von Hashtabellen-Buckets basierend auf dem Ladefaktor zu berechnen. Die Kapazität wird bei Bedarf automatisch erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Das IEqualityComparer Objekt enthält sowohl den Hashcodeanbieter als auch den Comparer. Wenn ein IEqualityComparer Objekt im Hashtable Konstruktor verwendet wird, müssen die Objekte, die als Schlüssel im Hashtable Objekt verwendet werden, nicht außer Kraft setzen.Object.GetHashCodeObject.Equals

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dies IEqualityComparer ermöglicht Szenarien wie das Ausführen von Nachschlagevorgängen mit Zeichenfolgen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.

Dieser Konstruktor ist ein O(1) Vorgang.

Weitere Informationen

Gilt für:

Hashtable(IDictionary)

Initialisiert eine neue Instanz der Hashtable Klasse, indem die Elemente aus dem angegebenen Wörterbuch in das neue Hashtable Objekt kopiert werden. Das neue Hashtable Objekt verfügt über eine anfängliche Kapazität, die der Anzahl der kopierten Elemente entspricht, und verwendet den Standardladefaktor, den Hashcodeanbieter und den Vergleich.

public:
 Hashtable(System::Collections::IDictionary ^ d);
public Hashtable(System.Collections.IDictionary d);
new System.Collections.Hashtable : System.Collections.IDictionary -> System.Collections.Hashtable
Public Sub New (d As IDictionary)

Parameter

d
IDictionary

Das IDictionary Objekt, das in ein neues Hashtable Objekt kopiert werden soll.

Ausnahmen

d ist null.

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        return myComparer.Compare(x, y) == 0;
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create the dictionary.
        var mySL = new SortedList();
        mySL.Add("FIRST", "Hello");
        mySL.Add("SECOND", "World");
        mySL.Add("THIRD", "!");

        // Create a hash table using the default comparer.
        var myHT1 = new Hashtable(mySL);

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        var myHT2 = 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".
        var myCul = new CultureInfo("tr-TR");
        var myHT3 = new Hashtable(mySL, new myCultureComparer(myCul));

        // Search for a key in each hash table.
        Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
        Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
    }
}


/*
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

*/
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

        Return myComparer.Compare(x, y) = 0
    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: {myHT1.ContainsKey("first")}")
      Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
      Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")

   End Sub

End Class


'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

Hinweise

Die anfängliche Kapazität wird auf die Anzahl der Elemente im Quellwörterbuch festgelegt. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel im Hashtable Objekt aus. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Die Elemente des Neuen Hashtable werden in derselben Reihenfolge sortiert, in der der Enumerator das IDictionary Objekt durchläuft.

Dieser Konstruktor ist ein O(n) Vorgang, wobei n es sich um die Anzahl der Elemente im d Parameter handelt.

Weitere Informationen

Gilt für:

Hashtable(Int32, IEqualityComparer)

Initialisiert eine neue, leere Instanz der Klasse mithilfe der Hashtable angegebenen Anfangskapazität und IEqualityComparerdes Standardlastfaktors.

public:
 Hashtable(int capacity, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(int capacity, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : int * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, equalityComparer As IEqualityComparer)

Parameter

capacity
Int32

Die ungefähre Anzahl der Elemente, die das Hashtable Objekt anfänglich enthalten kann.

equalityComparer
IEqualityComparer

Das IEqualityComparer Objekt, das den Hashcodeanbieter und den Vergleich definiert, der mit der Hashtable.

-oder-

null um den Standardmäßigen Hashcodeanbieter und den Standardvergleich zu verwenden. Der Standardmäßige Hashcodeanbieter ist die Implementierung jedes GetHashCode() Schlüssels, und der Standardvergleich ist die Implementierung jedes Equals(Object)Schlüssels.

Ausnahmen

capacity ist kleiner als 0 (null).

Beispiele

Im folgenden Codebeispiel werden Hashtabellen mit unterschiedlichen Hashtable Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen veranschaulicht, auch wenn jeder die gleichen Elemente enthält.

using System;
using System.Collections;
using System.Globalization;

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(object obj)
    {
        // Compare the hash code for the lowercase versions of the strings.
        return obj.ToString().ToLower().GetHashCode();
    }
}

public class SamplesHashtable
{

    public static void Main()
    {

        // Create a hash table using the default comparer.
        Hashtable myHT1 = new Hashtable(3);
        myHT1.Add("FIRST", "Hello");
        myHT1.Add("SECOND", "World");
        myHT1.Add("THIRD", "!");

        // Create a hash table using the specified IEqualityComparer that uses
        // the CaseInsensitiveComparer.DefaultInvariant to determine equality.
        Hashtable myHT2 = new Hashtable(3, new myCultureComparer());
        myHT2.Add("FIRST", "Hello");
        myHT2.Add("SECOND", "World");
        myHT2.Add("THIRD", "!");

        // 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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(3, new myCultureComparer(myCul));
        myHT3.Add("FIRST", "Hello");
        myHT3.Add("SECOND", "World");
        myHT3.Add("THIRD", "!");

        // 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"));
    }
}


/*
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

*/
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 a hash table using the default comparer.
      Dim myHT1 As New Hashtable(3)
      myHT1.Add("FIRST", "Hello")
      myHT1.Add("SECOND", "World")
      myHT1.Add("THIRD", "!")

      ' Create a hash table using the specified IEqualityComparer that uses
      ' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
      Dim myHT2 As New Hashtable(3, New myCultureComparer())
      myHT2.Add("FIRST", "Hello")
      myHT2.Add("SECOND", "World")
      myHT2.Add("THIRD", "!")

      ' 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(3, New myCultureComparer(myCul))
      myHT3.Add("FIRST", "Hello")
      myHT3.Add("SECOND", "World")
      myHT3.Add("THIRD", "!")

      ' 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

End Class


'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

Hinweise

Wenn Sie die anfängliche Kapazität angeben, müssen Sie beim Hinzufügen von Elementen zum Hashtable Objekt eine Reihe von Größenänderungsvorgängen ausführen. Die Kapazität wird basierend auf dem Lastfaktor automatisch je nach Bedarf erhöht.

Der Ladefaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Ladefaktor bedeutet einen schnelleren Blick auf die Kosten einer erhöhten Arbeitsspeicherauslastung.

Wenn der tatsächliche Ladefaktor den angegebenen Ladefaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Prime-Zahl erhöht, die größer als doppelt die aktuelle Anzahl von Buckets ist.

Das IEqualityComparer Objekt enthält sowohl den Hashcodeanbieter als auch den Comparer. Wenn ein IEqualityComparer Objekt im Hashtable Konstruktor verwendet wird, müssen die objekte, die als Schlüssel in der Hashtable Konstruktor verwendet werden, nicht außer Kraft setzen.Object.GetHashCodeObject.Equals

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in der Hashtable. Der Standardmäßige Hashcodeanbieter ist die Implementierung des Object.GetHashCodeSchlüssels.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einem Hashtable muss eindeutig sein. Der Standardvergleich ist die Implementierung des Object.EqualsSchlüssels.

Dies IEqualityComparer ermöglicht Szenarien wie das Ausführen von Nachschlagevorgängen mit Zeichenfolgen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.

Dieser Konstruktor ist ein O(n) Vorgang, bei dem n es sich um den capacity Parameter handelt.

Weitere Informationen

Gilt für: