Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Hashtable, constructeur (IHashCodeProvider, IComparer)

 
REMARQUE : cette API est désormais 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

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

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.

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.Capacité est automatiquement augmentée en fonction des besoins.

Le facteur de charge est le ratio maximal d'éléments par compartiment.Un facteur de charge plus petit moyens de recherche, au détriment de la consommation de mémoire accrue.

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

Le fournisseur de code de hachage fournit les codes de hachage des clés dans le Hashtable objet.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 une 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 sensible à 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 Hashtable constructeurs et illustre les différences de comportement entre les tables de hachage, même si chacun d'eux 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)
    {
        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
Disponible depuis 1.1
Retour au début
Afficher: