Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Costruttore Hashtable (Int32, Single, IHashCodeProvider, IComparer)

 

Data di pubblicazione: ottobre 2016

Nota: Questa API è ora obsoleta.

Inizializza una nuova istanza vuota della classe Hashtable usando la capacità iniziale, il fattore di carico, il provider di codice hash e l'operatore di confronto specificati.

Spazio dei nomi:   System.Collections
Assembly:  mscorlib (in mscorlib.dll)

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

Parametri

capacity
Type: System.Int32

Numero approssimativo di elementi che l'oggetto Hashtable può contenere inizialmente.

loadFactor
Type: System.Single

Un numero nell'intervallo da 0,1 a 1,0 moltiplicato per il valore predefinito che garantisce le prestazioni migliori. Il risultato è il rapporto massimo tra elementi e bucket.

hcp
Type: System.Collections.IHashCodeProvider

Oggetto IHashCodeProvider che fornisce i codici hash per tutte le chiavi in Hashtable.

-oppure-

null per usare il provider predefinito di codice hash, che rappresenta l'implementazione di ogni chiave di Object.GetHashCode.

comparer
Type: System.Collections.IComparer

Oggetto IComparer da usare per determinare se due chiavi sono uguali.

-oppure-

null per usare l'operatore di confronto predefinito, che rappresenta l'implementazione del metodo Object.Equals di ogni chiave.

Exception Condition
ArgumentOutOfRangeException

capacity è minore di zero.

-oppure-

loadFactor è minore di 0,1.

-oppure-

loadFactor è maggiore di 1.0.

Specificando la capacità iniziale si elimina la necessità di eseguire un numero di operazioni di ridimensionamento durante l'aggiunta di elementi di Hashtable oggetto. Capacità viene automaticamente aumentata in base alle esigenze in base al fattore di carico.

Il fattore di carico è il rapporto massimo tra elementi e bucket. Un fattore di carico inferiore determina tempi di ricerca al costo di maggiore utilizzo di memoria. Un fattore di carico pari a 1,0 è il miglior equilibrio tra velocità e dimensioni.

Quando il fattore di carico effettivo raggiunge il fattore di carico, il numero di bucket viene automaticamente aumentato al più piccolo numero primo maggiore di due volte il numero corrente di bucket.

Il provider di codice hash fornisce codici hash per le chiavi di Hashtable. Il provider di codice hash predefinito è l'implementazione della chiave di Object.GetHashCode.

L'operatore di confronto determina se due chiavi sono uguali. Ogni chiave in un Hashtable deve essere univoco. Operatore di confronto predefinito è l'implementazione della chiave di Object.Equals.

Il provider di codice hash e l'operatore di confronto personalizzato abilitare scenari, ad esempio eseguendo ricerche con le stringhe tra maiuscole e minuscole.

Questo costruttore è un'operazione O (n) operazione, in cui n è il capacity parametro.

Esempio di codice seguente crea diverse tabelle hash mediante Hashtable costruttori e vengono illustrate le differenze nel comportamento delle tabelle hash, anche se ciascuno dei quali contenente gli stessi elementi.

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, (float).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.
        Hashtable myHT2 = new Hashtable(3, (float).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".
        CultureInfo myCul = new CultureInfo("tr-TR");
        Hashtable myHT3 = new Hashtable(3, (float).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"));

    }

}


/* 
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
Disponibile da 1.1
Torna all'inizio
Mostra: