Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Hashtable-Konstruktor (Int32, IHashCodeProvider, IComparer)

Hinweis: Diese API ist mittlerweile veraltet.

Initialisiert eine neue leere Instanz der Hashtable-Klasse unter Verwendung der angegebenen Anfangskapazität, des angegebenen Hashcodeanbieters, des angegebenen Comparers und des Standardlastfaktors.

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

[ObsoleteAttribute("Please use Hashtable(int, IEqualityComparer) instead.")]
public Hashtable(
	int capacity,
	IHashCodeProvider hcp,
	IComparer comparer
)

Parameter

capacity
Typ: System.Int32
Die ungefähre Anzahl von Elementen, die die Hashtable anfänglich enthalten kann.
hcp
Typ: System.Collections.IHashCodeProvider
Das IHashCodeProvider-Objekt, das die Hashcodes für alle Schlüssel in der Hashtable bereitstellt.
- oder -
null , wenn der Hashcode-Standardanbieter verwendet werden soll. Dies ist die jeweilige Object.GetHashCode-Implementierung eines Schlüssels.
comparer
Typ: System.Collections.IComparer
Das IComparer-Objekt, mit dem ermittelt wird, ob zwei Schlüssel gleich sind.
- oder -
null , wenn der Standardcomparer verwendet werden soll. Dies ist die jeweilige Object.Equals-Implementierung eines Schlüssels.

AusnahmeBedingung
ArgumentOutOfRangeException

capacity ist kleiner als 0 (null).

Durch die Angabe der anfänglichen Kapazität entfallen einige Operationen zum Ändern der Größe, die sonst beim Hinzufügen von Elementen zum Hashtable-Objekt durchgeführt werden. Bei Bedarf wird die Kapazität entsprechend dem Lastfaktor automatisch erhöht.

Der Lastfaktor ist das maximale Verhältnis von Elementen zu Buckets. Ein kleinerer Lastfaktor führt zu einer schnelleren Suche bei höherem Speicherbedarf.

Wenn der tatsächliche Lastfaktor den angegebenen Lastfaktor erreicht, wird die Anzahl der Buckets automatisch auf die kleinste Primzahl erhöht, die größer als die doppelte Anzahl der derzeit vorhandenen Buckets ist.

Der Hashcodeanbieter verteilt Hashcodes für Schlüssel in der Hashtable. Der Hashcode-Standardanbieter ist die Object.GetHashCode-Implementierung des Schlüssels.

Der Comparer ermittelt, ob zwei Schlüssel gleich sind. Jeder Schlüssel in einer Hashtable muss eindeutig sein. Der Standardcomparer ist die Object.Equals-Implementierung des Schlüssels.

Benutzerdefinierte Hashcodeanbieter und Comparer ermöglichen Szenarien wie das Durchführen einer Suche ohne Berücksichtigung der Groß- und Kleinschreibung in Zeichenfolgen.

Diese Methode ist eine O(n)-Operation, wobei n der capacity-Parameter ist.

Im folgenden Codebeispiel werden Hashtabellen mit verschiedenen Hashtable-Konstruktoren erstellt und die Unterschiede im Verhalten der Hashtabellen dargestellt, auch dann, wenn jede Tabelle dieselben 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

*/



.NET Framework

Unterstützt in: 1.1, 1.0
Veraltet (Compilerwarnung) in 4.5.2
Veraltet (Compilerwarnung) in 4.5.1
Veraltet (Compilerwarnung) in 4.5
Veraltet (Compilerwarnung) in 4
Veraltet (Compilerwarnung) in 3.5
Veraltet (Compilerwarnung) in 3.5 SP1
Veraltet (Compilerwarnung) in 3.0
Veraltet (Compilerwarnung) in 3.0 SP1
Veraltet (Compilerwarnung) in 3.0 SP2
Veraltet (Compilerwarnung) in 2.0
Veraltet (Compilerwarnung) in 2.0 SP1
Veraltet (Compilerwarnung) in 2.0 SP2

.NET Framework Client Profile

Veraltet (Compilerwarnung) in 4
Veraltet (Compilerwarnung) in 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft