Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Hashtable, constructeur (IHashCodeProvider, IComparer)
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Hashtable, constructeur (IHashCodeProvider, IComparer)

Remarque : cette API est maintenant obsolète.

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

Espace de noms :  System.Collections
Assembly :  mscorlib (dans mscorlib.dll)

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

Paramètres

hcp
Type : System.Collections.IHashCodeProvider
Objet IHashCodeProvider qui fournit les codes de hachage pour toutes les clés dans l'objet Hashtable.
ou
null pour utiliser le fournisseur de code de hachage par défaut, qui est l'implémentation de chaque clé de Object.GetHashCode.
comparer
Type : System.Collections.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 Object.Equals.

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 augmentée selon les besoins.

Le facteur de charge est le ratio maximal d'éléments par compartiment. Un facteur de charge plus faible écourte les temps moyens de recherche, mais augmente la consommation de mémoire.

Lorsque le facteur de charge réel devient égal au 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 fournit les codes de hachage des clés dans l'objet Hashtable. Le fournisseur de code de hachage par défaut est l'implémentation de clé de Object.GetHashCode.

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

Le fournisseur de code de hachage personnalisé et le comparateur personnalisé permettent des scénarios, tels que des recherches à l'aide de chaînes qui ne respectent pas la casse.

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

L'exemple de code suivant crée des tables de hachage à l'aide de différents constructeurs Hashtable et montre les différences de comportement des tables de hachage, même si celles-ci contiennent 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)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    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.
        Hashtable 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.
        Hashtable 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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable 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: {0}", myHT1.ContainsKey("first"));
        Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
        Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
        Console.WriteLine("first is in myHT4: {0}", 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

*/



.NET Framework

Pris en charge dans : 1.1, 1.0
Obsolète (avertissement du compilateur) dans 4.5.2
Obsolète (avertissement du compilateur) dans 4.5.1
Obsolète (avertissement du compilateur) dans 4.5
Obsolète (avertissement du compilateur) dans 4
Obsolète (avertissement du compilateur) dans 3.5
Obsolète (avertissement du compilateur) dans 3.5 SP1
Obsolète (avertissement du compilateur) dans 3.0
Obsolète (avertissement du compilateur) dans 3.0 SP1
Obsolète (avertissement du compilateur) dans 3.0 SP2
Obsolète (avertissement du compilateur) dans 2.0
Obsolète (avertissement du compilateur) dans 2.0 SP1
Obsolète (avertissement du compilateur) dans 2.0 SP2

.NET Framework Client Profile

Obsolète (avertissement du compilateur) dans 4
Obsolète (avertissement du compilateur) dans 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2015 Microsoft