Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source

Hashtable, constructeur (Int32, IHashCodeProvider, IComparer)

Remarque : cette API est maintenant obsolète.

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

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

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

Paramètres

capacity
Type : System.Int32
Nombre approximatif d'éléments que l'objet Hashtable peut contenir initialement.
hcp
Type : System.Collections.IHashCodeProvider
Objet IHashCodeProvider qui fournit les codes de hachage pour toutes les clés dans 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.

ExceptionCondition
ArgumentOutOfRangeException

capacity est inférieur à zéro.

La spécification de la capacité initiale évite d'avoir à effectuer un certain nombre d'opérations de redimensionnement lors de l'ajout d'éléments à l'objet Hashtable. La capacité est augmentée automatiquement suivant le besoin en fonction du facteur de charge.

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 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(n), où n est le paramètre capacity.

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 myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

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

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

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

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

public class SamplesHashtable
{

    public static void Main()
    {

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

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

        // Create a hash table using an IEqualityComparer that is based on
        // the Turkish culture (tr-TR) where "I" is not the uppercase
        // version of "i".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(3, new myCultureComparer(myCul));
        myHT3.Add("FIRST", "Hello");
        myHT3.Add("SECOND", "World");
        myHT3.Add("THIRD", "!");

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

    }

}


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

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

*/



.NET Framework

Pris en charge dans : 1.1, 1.0
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 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

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
Afficher:
© 2014 Microsoft