Hashtable Constructeurs

Définition

Initialise une nouvelle instance de la classe Hashtable.

Surcharges

Nom Description
Hashtable()

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale, du facteur de charge, du fournisseur de code de hachage et du comparateur par défaut.

Hashtable(Int32, Single, IHashCodeProvider, IComparer)
Obsolète.

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale, du facteur de charge, du fournisseur de code de hachage et du comparateur spécifiés.

Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
Obsolète.

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge, le fournisseur de code de hachage et le comparateur spécifiés.

Hashtable(Int32, Single, IEqualityComparer)

Initialise une nouvelle instance vide de la classe à l’aide de la capacité initiale, du facteur de charge et IEqualityComparer de l’objet Hashtable spécifiés.

Hashtable(Int32, IHashCodeProvider, IComparer)
Obsolète.

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale spécifiée, du fournisseur de code de hachage, du comparateur et du facteur de charge par défaut.

Hashtable(IDictionary, Single, IEqualityComparer)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge et IEqualityComparer l’objet spécifiés.

Hashtable(IDictionary, IHashCodeProvider, IComparer)
Obsolète.

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge par défaut, ainsi que le fournisseur de code de hachage et le comparateur de code de hachage spécifiés. Cette API est obsolète. Pour obtenir une alternative, consultez Hashtable(IDictionary, IEqualityComparer).

Hashtable(Int32, Single)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale et du facteur de charge spécifiés, ainsi que le fournisseur et le comparateur de code de hachage par défaut.

Hashtable(SerializationInfo, StreamingContext)

Initialise une nouvelle instance vide de la classe sérialisable à l’aide Hashtable des objets et SerializationInfo des objets spécifiésStreamingContext.

Hashtable(IHashCodeProvider, IComparer)
Obsolète.

Initialise une nouvelle instance vide de la Hashtable classe à l’aide de la capacité initiale et du facteur de charge par défaut, ainsi que le fournisseur et le comparateur de code de hachage spécifiés.

Hashtable(IDictionary, Single)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge spécifié, ainsi que le fournisseur et le comparateur de code de hachage par défaut.

Hashtable(IDictionary, IEqualityComparer)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans un nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge par défaut et l’objet spécifié IEqualityComparer .

Hashtable(Int32)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale spécifiée et du facteur de charge par défaut, du fournisseur de code de hachage et du comparateur.

Hashtable(IEqualityComparer)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale et du facteur de charge par défaut, ainsi que l’objet spécifié IEqualityComparer .

Hashtable(IDictionary)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge par défaut, le fournisseur de code de hachage et le comparateur.

Hashtable(Int32, IEqualityComparer)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale spécifiée et IEqualityComparerdu facteur de charge par défaut.

Hashtable()

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale, du facteur de charge, du fournisseur de code de hachage et du comparateur par défaut.

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

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La capacité d’une table de hachage est utilisée pour calculer le nombre optimal de compartiments de table de hachage en fonction du facteur de charge. La capacité est automatiquement augmentée en fonction des besoins.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans l’objet Hashtable . Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Ce constructeur est une O(1) opération.

Voir aussi

S’applique à

Hashtable(Int32, Single, IHashCodeProvider, IComparer)

Attention

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

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale, du facteur de charge, du fournisseur de code de hachage et du comparateur spécifiés.

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)

Paramètres

capacity
Int32

Nombre approximatif d’éléments que l’objet Hashtable peut contenir initialement.

loadFactor
Single

Nombre compris entre 0,1 et 1,0, multiplié par la valeur par défaut qui offre les meilleures performances. Le résultat est le rapport maximal d’éléments à compartiments.

hcp
IHashCodeProvider

Objet IHashCodeProvider qui fournit les codes de hachage pour toutes les clés dans le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut, qui est l’implémentation de GetHashCode()chaque clé .

comparer
IComparer

Objet IComparer à utiliser pour déterminer si deux clés sont égales.

-ou-

null pour utiliser le comparateur par défaut, qui est l’implémentation de chaque clé de Equals(Object).

Attributs

Exceptions

capacity est inférieur à zéro.

-ou-

loadFactor est inférieur à 0,1.

-ou-

loadFactor est supérieur à 1,0.

Remarques

La spécification de la capacité initiale élimine la nécessité d’effectuer un certain nombre d’opérations de redimensionnement lors de l’ajout d’éléments à l’objet Hashtable . La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire. Un facteur de charge de 1,0 est le meilleur équilibre entre la vitesse et la taille.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Le fournisseur de code de hachage personnalisé et le comparateur personnalisé activent des scénarios tels que l’exécution de recherches avec des chaînes qui ne respectent pas la casse.

Ce constructeur est une O(n) opération, où n est le capacity paramètre.

Voir aussi

S’applique à

Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)

Attention

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

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge, le fournisseur de code de hachage et le comparateur spécifiés.

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)

Paramètres

d
IDictionary

Objet IDictionary à copier dans un nouvel Hashtable objet.

loadFactor
Single

Nombre compris entre 0,1 et 1,0, multiplié par la valeur par défaut qui offre les meilleures performances. Le résultat est le rapport maximal d’éléments à compartiments.

hcp
IHashCodeProvider

Objet IHashCodeProvider qui fournit les codes de hachage pour toutes les clés dans le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut, qui est l’implémentation de GetHashCode()chaque clé .

comparer
IComparer

Objet IComparer à utiliser pour déterminer si deux clés sont égales.

-ou-

null pour utiliser le comparateur par défaut, qui est l’implémentation de chaque clé de Equals(Object).

Attributs

Exceptions

d a la valeur null.

loadFactor est inférieur à 0,1.

-ou-

loadFactor est supérieur à 1,0.

Remarques

La capacité initiale est définie sur le nombre d’éléments dans le dictionnaire source. La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire. Un facteur de charge de 1,0 est le meilleur équilibre entre la vitesse et la taille.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans l’objet Hashtable . Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Le fournisseur de code de hachage personnalisé et le comparateur personnalisé activent des scénarios tels que l’exécution de recherches avec des chaînes qui ne respectent pas la casse.

Les éléments du nouveau Hashtable sont triés dans le même ordre dans lequel l’énumérateur itère dans l’objet IDictionary .

Ce constructeur est une O(n) opération, où n se trouve le nombre d’éléments dans le d paramètre.

S’applique à

Hashtable(Int32, Single, IEqualityComparer)

Initialise une nouvelle instance vide de la classe à l’aide de la capacité initiale, du facteur de charge et IEqualityComparer de l’objet Hashtable spécifiés.

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)

Paramètres

capacity
Int32

Nombre approximatif d’éléments que l’objet Hashtable peut contenir initialement.

loadFactor
Single

Nombre compris entre 0,1 et 1,0, multiplié par la valeur par défaut qui offre les meilleures performances. Le résultat est le rapport maximal d’éléments à compartiments.

equalityComparer
IEqualityComparer

Objet IEqualityComparer qui définit le fournisseur de code de hachage et le comparateur à utiliser avec le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut et le comparateur par défaut. Le fournisseur de code de hachage par défaut est l’implémentation de GetHashCode() chaque clé et le comparateur par défaut est l’implémentation de Equals(Object)chaque clé.

Exceptions

capacity est inférieur à zéro.

-ou-

loadFactor est inférieur à 0,1.

-ou-

loadFactor est supérieur à 1,0.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La spécification de la capacité initiale élimine la nécessité d’effectuer un certain nombre d’opérations de redimensionnement lors de l’ajout d’éléments à l’objet Hashtable . La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire. Un facteur de charge de 1,0 est le meilleur équilibre entre la vitesse et la taille.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

L’objet IEqualityComparer inclut à la fois le fournisseur de code de hachage et le comparateur. Si un IEqualityComparer élément est utilisé dans le Hashtable constructeur, les objets utilisés en tant que clés ne Hashtable sont pas nécessaires pour remplacer les méthodes et Object.Equals les Object.GetHashCode méthodes.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Les IEqualityComparer scénarios permettent de faire des recherches avec des chaînes qui ne respectent pas la casse.

Ce constructeur est une O(n) opération, où n est le capacity paramètre.

Voir aussi

S’applique à

Hashtable(Int32, IHashCodeProvider, IComparer)

Attention

Please use Hashtable(int, IEqualityComparer) instead.

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale spécifiée, du fournisseur de code de hachage, du comparateur et du facteur de charge par défaut.

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)

Paramètres

capacity
Int32

Nombre approximatif d’éléments que l’objet Hashtable peut contenir initialement.

hcp
IHashCodeProvider

Objet IHashCodeProvider qui fournit les codes de hachage pour toutes les clés dans le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut, qui est l’implémentation de GetHashCode()chaque clé .

comparer
IComparer

Objet IComparer à utiliser pour déterminer si deux clés sont égales.

-ou-

null pour utiliser le comparateur par défaut, qui est l’implémentation de chaque clé de Equals(Object).

Attributs

Exceptions

capacity est inférieur à zéro.

Remarques

La spécification de la capacité initiale élimine la nécessité d’effectuer un certain nombre d’opérations de redimensionnement lors de l’ajout d’éléments à l’objet Hashtable . La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Le fournisseur de code de hachage personnalisé et le comparateur personnalisé activent des scénarios tels que l’exécution de recherches avec des chaînes qui ne respectent pas la casse.

Ce constructeur est une O(n) opération, où n est le capacity paramètre.

Voir aussi

S’applique à

Hashtable(IDictionary, Single, IEqualityComparer)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge et IEqualityComparer l’objet spécifiés.

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)

Paramètres

d
IDictionary

Objet IDictionary à copier dans un nouvel Hashtable objet.

loadFactor
Single

Nombre compris entre 0,1 et 1,0, multiplié par la valeur par défaut qui offre les meilleures performances. Le résultat est le rapport maximal d’éléments à compartiments.

equalityComparer
IEqualityComparer

Objet IEqualityComparer qui définit le fournisseur de code de hachage et le comparateur à utiliser avec le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut et le comparateur par défaut. Le fournisseur de code de hachage par défaut est l’implémentation de GetHashCode() chaque clé et le comparateur par défaut est l’implémentation de Equals(Object)chaque clé.

Exceptions

d a la valeur null.

loadFactor est inférieur à 0,1.

-ou-

loadFactor est supérieur à 1,0.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La capacité initiale est définie sur le nombre d’éléments dans le dictionnaire source. La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire. Un facteur de charge de 1,0 est le meilleur équilibre entre la vitesse et la taille.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

L’objet IEqualityComparer inclut à la fois le fournisseur de code de hachage et le comparateur. Si un IEqualityComparer élément est utilisé dans le Hashtable constructeur, les objets utilisés comme clés dans l’objet Hashtable ne sont pas nécessaires pour remplacer les méthodes et Object.Equals les Object.GetHashCode méthodes.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Les IEqualityComparer scénarios permettent de faire des recherches avec des chaînes qui ne respectent pas la casse.

Les éléments du nouveau Hashtable sont triés dans le même ordre dans lequel l’énumérateur itère dans l’objet IDictionary .

Ce constructeur est une O(n) opération, où n se trouve le nombre d’éléments dans le d paramètre.

Voir aussi

S’applique à

Hashtable(IDictionary, IHashCodeProvider, IComparer)

Attention

Please use Hashtable(IDictionary, IEqualityComparer) instead.

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge par défaut, ainsi que le fournisseur de code de hachage et le comparateur de code de hachage spécifiés. Cette API est obsolète. Pour obtenir une alternative, consultez 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)

Paramètres

d
IDictionary

Objet IDictionary à copier dans un nouvel Hashtable objet.

hcp
IHashCodeProvider

Objet IHashCodeProvider qui fournit les codes de hachage pour toutes les clés dans le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut, qui est l’implémentation de GetHashCode()chaque clé .

comparer
IComparer

Objet IComparer à utiliser pour déterminer si deux clés sont égales.

-ou-

null pour utiliser le comparateur par défaut, qui est l’implémentation de chaque clé de Equals(Object).

Attributs

Exceptions

d a la valeur null.

Remarques

La capacité initiale est définie sur le nombre d’éléments dans le dictionnaire source. La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans l’objet Hashtable . Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Le fournisseur de code de hachage personnalisé et le comparateur personnalisé activent des scénarios tels que l’exécution de recherches avec des chaînes qui ne respectent pas la casse.

Les éléments du nouveau Hashtable sont triés dans le même ordre dans lequel l’énumérateur itère dans l’objet IDictionary .

Ce constructeur est une O(n) opération, où n se trouve le nombre d’éléments dans le d paramètre.

Voir aussi

S’applique à

Hashtable(Int32, Single)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale et du facteur de charge spécifiés, ainsi que le fournisseur et le comparateur de code de hachage par défaut.

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)

Paramètres

capacity
Int32

Nombre approximatif d’éléments que l’objet Hashtable peut contenir initialement.

loadFactor
Single

Nombre compris entre 0,1 et 1,0, multiplié par la valeur par défaut qui offre les meilleures performances. Le résultat est le rapport maximal d’éléments à compartiments.

Exceptions

capacity est inférieur à zéro.

-ou-

loadFactor est inférieur à 0,1.

-ou-

loadFactor est supérieur à 1,0.

capacity provoque un dépassement de capacité.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La spécification de la capacité initiale élimine la nécessité d’effectuer un certain nombre d’opérations de redimensionnement lors de l’ajout d’éléments à l’objet Hashtable . La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire. Un facteur de charge de 1,0 est le meilleur équilibre entre la vitesse et la taille.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Ce constructeur est une O(n) opération, où n est le capacity paramètre.

Voir aussi

S’applique à

Hashtable(SerializationInfo, StreamingContext)

Initialise une nouvelle instance vide de la classe sérialisable à l’aide Hashtable des objets et SerializationInfo des objets spécifiésStreamingContext.

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)

Paramètres

info
SerializationInfo

Objet SerializationInfo contenant les informations requises pour sérialiser l’objet Hashtable .

context
StreamingContext

Objet StreamingContext contenant la source et la destination du flux sérialisé associé au Hashtable.

Exceptions

info a la valeur null.

Remarques

La capacité d’une table de hachage est utilisée pour calculer le nombre optimal de compartiments de table de hachage en fonction du facteur de charge. La capacité est automatiquement augmentée en fonction des besoins.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans l’objet Hashtable . Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Ce constructeur est une O(n) opération, où n est Count.

Étant donné que la sérialisation et la désérialisation d’un énumérateur pour un Hashtable peut entraîner la réorganisation des éléments, il n’est pas possible de continuer l’énumération sans appeler la Reset méthode.

Voir aussi

S’applique à

Hashtable(IHashCodeProvider, IComparer)

Attention

Please use Hashtable(IEqualityComparer) instead.

Initialise une nouvelle instance vide de la Hashtable classe à l’aide de la capacité initiale et du facteur de charge par défaut, ainsi que le fournisseur et le comparateur de code de hachage spécifiés.

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)

Paramètres

hcp
IHashCodeProvider

Objet IHashCodeProvider qui fournit les codes de hachage pour toutes les clés de l’objet Hashtable .

-ou-

null pour utiliser le fournisseur de code de hachage par défaut, qui est l’implémentation de GetHashCode()chaque clé .

comparer
IComparer

Objet IComparer à utiliser pour déterminer si deux clés sont égales.

-ou-

null pour utiliser le comparateur par défaut, qui est l’implémentation de chaque clé de Equals(Object).

Attributs

Remarques

La capacité d’une table de hachage est utilisée pour calculer le nombre optimal de compartiments de table de hachage en fonction du facteur de charge. La capacité est automatiquement augmentée en fonction des besoins.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans l’objet Hashtable . Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Le fournisseur de code de hachage personnalisé et le comparateur personnalisé activent des scénarios tels que l’exécution de recherches avec des chaînes qui ne respectent pas la casse.

Ce constructeur est une O(1) opération.

Voir aussi

S’applique à

Hashtable(IDictionary, Single)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge spécifié, ainsi que le fournisseur et le comparateur de code de hachage par défaut.

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)

Paramètres

d
IDictionary

Objet IDictionary à copier dans un nouvel Hashtable objet.

loadFactor
Single

Nombre compris entre 0,1 et 1,0, multiplié par la valeur par défaut qui offre les meilleures performances. Le résultat est le rapport maximal d’éléments à compartiments.

Exceptions

d a la valeur null.

loadFactor est inférieur à 0,1.

-ou-

loadFactor est supérieur à 1,0.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La capacité initiale est définie sur le nombre d’éléments dans le dictionnaire source. La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire. Un facteur de charge de 1,0 est le meilleur équilibre entre la vitesse et la taille.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans l’objet Hashtable . Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Les éléments du nouveau Hashtable sont triés dans le même ordre dans lequel l’énumérateur itère dans l’objet IDictionary .

Ce constructeur est une O(n) opération, où n se trouve le nombre d’éléments dans le d paramètre.

Voir aussi

S’applique à

Hashtable(IDictionary, IEqualityComparer)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans un nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge par défaut et l’objet spécifié IEqualityComparer .

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)

Paramètres

d
IDictionary

Objet IDictionary à copier dans un nouvel Hashtable objet.

equalityComparer
IEqualityComparer

Objet IEqualityComparer qui définit le fournisseur de code de hachage et le comparateur à utiliser avec le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut et le comparateur par défaut. Le fournisseur de code de hachage par défaut est l’implémentation de GetHashCode() chaque clé et le comparateur par défaut est l’implémentation de Equals(Object)chaque clé.

Exceptions

d a la valeur null.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La capacité initiale est définie sur le nombre d’éléments dans le dictionnaire source. La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

L’objet IEqualityComparer inclut à la fois le fournisseur de code de hachage et le comparateur. Si un IEqualityComparer élément est utilisé dans le Hashtable constructeur, les objets utilisés comme clés dans l’objet Hashtable ne sont pas nécessaires pour remplacer les méthodes et Object.Equals les Object.GetHashCode méthodes.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Les IEqualityComparer scénarios permettent de faire des recherches avec des chaînes qui ne respectent pas la casse.

Les éléments du nouveau Hashtable sont triés dans le même ordre dans lequel l’énumérateur itère dans l’objet IDictionary .

Ce constructeur est une O(n) opération, où n se trouve le nombre d’éléments dans le d paramètre.

Voir aussi

S’applique à

Hashtable(Int32)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale spécifiée et du facteur de charge par défaut, du fournisseur de code de hachage et du comparateur.

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

Paramètres

capacity
Int32

Nombre approximatif d’éléments que l’objet Hashtable peut contenir initialement.

Exceptions

capacity est inférieur à zéro.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La spécification de la capacité initiale élimine la nécessité d’effectuer un certain nombre d’opérations de redimensionnement lors de l’ajout d’éléments à l’objet Hashtable . La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Ce constructeur est une O(n) opération, où n est capacity.

Voir aussi

S’applique à

Hashtable(IEqualityComparer)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale et du facteur de charge par défaut, ainsi que l’objet spécifié IEqualityComparer .

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)

Paramètres

equalityComparer
IEqualityComparer

Objet IEqualityComparer qui définit le fournisseur de code de hachage et le comparateur à utiliser avec l’objet Hashtable .

-ou-

null pour utiliser le fournisseur de code de hachage par défaut et le comparateur par défaut. Le fournisseur de code de hachage par défaut est l’implémentation de GetHashCode() chaque clé et le comparateur par défaut est l’implémentation de Equals(Object)chaque clé.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La capacité d’une table de hachage est utilisée pour calculer le nombre optimal de compartiments de table de hachage en fonction du facteur de charge. La capacité est automatiquement augmentée en fonction des besoins.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

L’objet IEqualityComparer inclut à la fois le fournisseur de code de hachage et le comparateur. Si un IEqualityComparer élément est utilisé dans le Hashtable constructeur, les objets utilisés comme clés dans l’objet Hashtable ne sont pas nécessaires pour remplacer les méthodes et Object.Equals les Object.GetHashCode méthodes.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Les IEqualityComparer scénarios permettent de faire des recherches avec des chaînes qui ne respectent pas la casse.

Ce constructeur est une O(1) opération.

Voir aussi

S’applique à

Hashtable(IDictionary)

Initialise une nouvelle instance de la Hashtable classe en copiant les éléments du dictionnaire spécifié dans le nouvel Hashtable objet. Le nouvel Hashtable objet a une capacité initiale égale au nombre d’éléments copiés et utilise le facteur de charge par défaut, le fournisseur de code de hachage et le comparateur.

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)

Paramètres

d
IDictionary

Objet IDictionary à copier dans un nouvel Hashtable objet.

Exceptions

d a la valeur null.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La capacité initiale est définie sur le nombre d’éléments dans le dictionnaire source. La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans l’objet Hashtable . Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Les éléments du nouveau Hashtable sont triés dans le même ordre dans lequel l’énumérateur itère dans l’objet IDictionary .

Ce constructeur est une O(n) opération, où n se trouve le nombre d’éléments dans le d paramètre.

Voir aussi

S’applique à

Hashtable(Int32, IEqualityComparer)

Initialise une nouvelle instance vide de la classe à l’aide Hashtable de la capacité initiale spécifiée et IEqualityComparerdu facteur de charge par défaut.

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)

Paramètres

capacity
Int32

Nombre approximatif d’éléments que l’objet Hashtable peut contenir initialement.

equalityComparer
IEqualityComparer

Objet IEqualityComparer qui définit le fournisseur de code de hachage et le comparateur à utiliser avec le Hashtable.

-ou-

null pour utiliser le fournisseur de code de hachage par défaut et le comparateur par défaut. Le fournisseur de code de hachage par défaut est l’implémentation de GetHashCode() chaque clé et le comparateur par défaut est l’implémentation de Equals(Object)chaque clé.

Exceptions

capacity est inférieur à zéro.

Exemples

L’exemple de code suivant crée des tables de hachage à l’aide de constructeurs différents Hashtable et illustre les différences dans le comportement des tables de hachage, même si chacune contient les mêmes éléments.

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

Remarques

La spécification de la capacité initiale élimine la nécessité d’effectuer un certain nombre d’opérations de redimensionnement lors de l’ajout d’éléments à l’objet Hashtable . La capacité est automatiquement augmentée en fonction du facteur de charge.

Le facteur de charge correspond au ratio maximal d’éléments par compartiments. Un facteur de charge plus petit signifie une recherche plus rapide au coût d’une consommation accrue de mémoire.

Lorsque le facteur de charge réel atteint le facteur de charge spécifié, le nombre de compartiments est automatiquement augmenté au plus petit nombre premier supérieur à deux fois le nombre actuel de compartiments.

L’objet IEqualityComparer inclut à la fois le fournisseur de code de hachage et le comparateur. Si un IEqualityComparer élément est utilisé dans le Hashtable constructeur, les objets utilisés en tant que clés ne Hashtable sont pas nécessaires pour remplacer les méthodes et Object.Equals les Object.GetHashCode méthodes.

Le fournisseur de codes de hachage distribue les codes de hachage pour les clés dans le Hashtable. Le fournisseur de code de hachage par défaut est l’implémentation de la clé .Object.GetHashCode

Le comparateur détermine si deux clés sont égales. Chaque clé d’un Hashtable doit être unique. Le comparateur par défaut est l’implémentation de la clé de Object.Equals.

Les IEqualityComparer scénarios permettent de faire des recherches avec des chaînes qui ne respectent pas la casse.

Ce constructeur est une O(n) opération, où n est le capacity paramètre.

Voir aussi

S’applique à