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)

 

Data di pubblicazione: novembre 2016

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

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

public Hashtable(
	int capacity
)

Parametri

capacity
Type: System.Int32

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

Exception Condition
ArgumentOutOfRangeException

capacity è minore di zero.

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.

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.

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

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);
        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

*/

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: