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 HashSet<T>(IEnumerable<T>, IEqualityComparer<T>)

 

Data di pubblicazione: novembre 2016

Inizializza una nuova istanza della classe HashSet<T> che usa l'operatore di confronto per l'uguaglianza specificato per il tipo di insieme, contiene gli elementi copiati dalla raccolta specificata e ha una capacità sufficiente a contenere il numero di elementi copiati.

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

public HashSet(
	IEnumerable<T> collection,
	IEqualityComparer<T> comparer
)

Parametri

collection
Type: System.Collections.Generic.IEnumerable<T>

Raccolta i cui elementi vengono copiati nel nuovo insieme.

comparer
Type: System.Collections.Generic.IEqualityComparer<T>

Implementazione di IEqualityComparer<T> da usare per confrontare i valori nel set oppure null per usare l'implementazione di EqualityComparer<T> predefinita per il tipo di set.

Exception Condition
ArgumentNullException

collection è null.

La capacità di un HashSet<T> oggetto è il numero di elementi che è possibile inserire l'oggetto. Oggetto HashSet<T> la capacità dell'oggetto aumentano automaticamente man mano gli elementi vengono aggiunti all'oggetto.

Se collection contiene duplicati, il set conterrà uno di ogni elemento univoco. Verrà generata alcuna eccezione. Pertanto, le dimensioni del set risultante non sono identica a quella di collection.

Questo costruttore è un'operazione O (n) operazione, in cui n è il numero di elementi di collection parametro.

L'esempio seguente usa una classe fornita IEqualityComparer<T> per consentire confronti tra maiuscole e minuscole degli elementi di un HashSet<T> raccolta di tipi veicolo.

using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        SameVehicleComparer compareVehicles = new SameVehicleComparer();
        HashSet<string> allVehicles = new HashSet<string>(compareVehicles);
        List<string> someVehicles = new List<string>();

        someVehicles.Add("Planes");
        someVehicles.Add("Trains");
        someVehicles.Add("Automobiles");

        // Add in the vehicles contained in the someVehicles list.
        allVehicles.UnionWith(someVehicles);

        Console.WriteLine("The current HashSet contains:\n");
        foreach (string vehicle in allVehicles)
        {
            Console.WriteLine(vehicle);
        }

        allVehicles.Add("Ships");
        allVehicles.Add("Motorcycles");
        allVehicles.Add("Rockets");
        allVehicles.Add("Helicopters");
        allVehicles.Add("Submarines");

        Console.WriteLine("\nThe updated HashSet contains:\n");
        foreach (string vehicle in allVehicles)
        {
            Console.WriteLine(vehicle);
        }

        // Verify that the 'All Vehicles' set contains at least the vehicles in
        // the 'Some Vehicles' list.
        if (allVehicles.IsSupersetOf(someVehicles))
        {
            Console.Write("\nThe 'All' vehicles set contains everything in ");
            Console.WriteLine("'Some' vechicles list.");
        }

        // Check for Rockets. Here the SameVehicleComparer will compare
        // true for the mixed-case vehicle type.
        if (allVehicles.Contains("roCKeTs"))
        {
            Console.WriteLine("\nThe 'All' vehicles set contains 'roCKeTs'");
        }

        allVehicles.ExceptWith(someVehicles);
        Console.WriteLine("\nThe excepted HashSet contains:\n");
        foreach (string vehicle in allVehicles)
        {
            Console.WriteLine(vehicle);
        }

        // Remove all the vehicles that are not 'super cool'.
        allVehicles.RemoveWhere(isNotSuperCool);

        Console.WriteLine("\nThe super cool vehicles are:\n");
        foreach (string vehicle in allVehicles)
        {
            Console.WriteLine(vehicle);
        }
    }

    // Predicate to determine vehicle 'coolness'.
    private static bool isNotSuperCool(string vehicle)
    {
        bool superCool = (vehicle == "Helicopters") || (vehicle == "Motorcycles");

        return !superCool;
    }
}

class SameVehicleComparer : EqualityComparer<string>
{
    public override bool Equals(string s1, string s2)
    {
        return s1.Equals(s2, StringComparison.CurrentCultureIgnoreCase);
    }


    public override int GetHashCode(string s)
    {
        return base.GetHashCode();
    }
}

// The program writes the following output to the console.
//
// The current HashSet contains:
//
// Planes
// Trains
// Automobiles
//
// The updated HashSet contains:
//
// Planes
// Trains
// Automobiles
// Ships
// Motorcycles
// Rockets
// Helicopters
// Submarines
//
// The 'All' vehicles set contains everything in 'Some' vechicles list.
//
// The 'All' vehicles set contains 'roCKeTs'
//
// The excepted HashSet contains:
//
// Ships
// Motorcycles
// Rockets
// Helicopters
// Submarines
//
// The super cool vehicles are:
//
// Motorcycles
// Helicopters

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: