CollectionsUtil Klas

Definitie

Hiermee maakt u verzamelingen die het hoofdlettergebruik in tekenreeksen negeren.

public ref class CollectionsUtil
public class CollectionsUtil
type CollectionsUtil = class
Public Class CollectionsUtil
Overname
CollectionsUtil

Voorbeelden

In het volgende voorbeeld worden twee verzamelingen, een hash-tabel en een gesorteerde lijst, gebruikt om populatiewaarden voor een groep steden op te slaan. De waarden worden opgehaald uit de verzamelingen door de plaatsnamen als sleutels te gebruiken. De plaatsnamen zijn in gemengde gevallen om hun gebruik weer te geven als hoofdlettergevoelige sleutels.

using System;
using System.Collections;
using System.Collections.Specialized;

class TestCollectionsUtils
{
    public static void Main()
    {
        Hashtable population1 = CollectionsUtil.CreateCaseInsensitiveHashtable();

        population1["Trapperville"] = 15;
        population1["Doggerton"] = 230;
        population1["New Hollow"] = 1234;
        population1["McHenry"] = 185;

        // Select cities from the table using mixed case.
        Console.WriteLine("Case insensitive hashtable results:\n");
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population1["trapperville"]);
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population1["DOGGERTON"]);
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population1["New hoLLow"]);
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population1["MchenrY"]);

        SortedList population2 = CollectionsUtil.CreateCaseInsensitiveSortedList();

        foreach (string city in population1.Keys)
        {
           population2.Add(city, population1[city]);
        }

        // Select cities from the sorted list using mixed case.
        Console.WriteLine("\nCase insensitive sorted list results:\n");
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population2["trapPeRVille"]);
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population2["dOGGeRtON"]);
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population2["nEW hOLLOW"]);
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population2["MchEnrY"]);
    }
}

// This program displays the following output to the console
//
// Case insensitive hashtable results:
//
// Trapperville's population is: 15
// Doggerton's population is: 230
// New Hollow's population is: 1234
// McHenry's population is: 185
//
// Case insensitive sorted list results:
//
// Trapperville's population is: 15
// Doggerton's population is: 230
// New Hollow's population is: 1234
// McHenry's population is: 185
Imports System.Collections
Imports System.Collections.Specialized

Class TestCollectionsUtils
    Public Shared Sub Main()
        Dim population1 As Hashtable = CollectionsUtil.CreateCaseInsensitiveHashtable()

        population1("Trapperville") = 15
        population1("Doggerton") = 230
        population1("New Hollow") = 1234
        population1("McHenry") = 185

        ' Select cities from the table using mixed case.
        Console.WriteLine("Case insensitive hashtable results:" + Environment.NewLine)
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population1("trapperville"))
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population1("DOGGERTON"))
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population1("New hoLLow"))
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population1("MchenrY"))

        Dim population2 As SortedList = CollectionsUtil.CreateCaseInsensitiveSortedList()

        For Each city As String In population1.Keys
            population2.Add(city, population1(city))
        Next city

        ' Select cities from the sorted list using mixed case.
        Console.WriteLine(Environment.NewLine + "Case insensitive sorted list results:" + Environment.NewLine)
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population2("trapPeRVille"))
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population2("dOGGeRtON"))
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population2("nEW hOLLOW"))
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population2("MchEnrY"))
    End Sub
End Class

' This program displays the following output to the console
'
' Case insensitive hashtable results:
'
' Trapperville's population is: 15
' Doggerton's population is: 230
' New Hollow's population is: 1234
' McHenry's population is: 185
'
' Case insensitive sorted list results:
'
' Trapperville's population is: 15
' Doggerton's population is: 230
' New Hollow's population is: 1234
' McHenry's population is: 185

Opmerkingen

Deze methoden genereren een niet-hoofdlettergevoelig exemplaar van de verzameling met behulp van niet-hoofdlettergevoelige implementaties van de hashcodeprovider en de comparer. Het resulterende exemplaar kan worden gebruikt als andere exemplaren van die klasse, hoewel het zich anders kan gedragen.

Stel dat twee objecten met de sleutels 'hello' en 'HELLO' moeten worden toegevoegd aan een hash-tabel. Een hoofdlettergevoelige hash-tabel zou twee verschillende vermeldingen maken; overwegende dat een hoofdlettergevoelige hashtabel een uitzondering genereert bij het toevoegen van het tweede object.

Constructors

Name Description
CollectionsUtil()

Initialiseert een nieuw exemplaar van de CollectionsUtil klasse.

Methoden

Name Description
CreateCaseInsensitiveHashtable()

Hiermee maakt u een nieuw niet hoofdlettergevoelig exemplaar van de Hashtable klasse met de standaardinitiële capaciteit.

CreateCaseInsensitiveHashtable(IDictionary)

Kopieert de vermeldingen uit de opgegeven woordenlijst naar een nieuw niet hoofdlettergevoelig exemplaar van de Hashtable klasse met dezelfde initiële capaciteit als het aantal gekopieerde vermeldingen.

CreateCaseInsensitiveHashtable(Int32)

Hiermee maakt u een nieuw niet hoofdlettergevoelig exemplaar van de Hashtable klasse met de opgegeven initiële capaciteit.

CreateCaseInsensitiveSortedList()

Hiermee maakt u een nieuw exemplaar van de SortedList klasse waarmee het hoofdlettergebruik van tekenreeksen wordt genegeerd.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Veiligheid thread

A Hashtable kan één schrijver en meerdere lezers tegelijk ondersteunen. Om meerdere schrijvers te ondersteunen, moeten alle bewerkingen worden uitgevoerd via de wrapper die door de Synchronized(Hashtable) methode wordt geretourneerd.

A SortedList kan meerdere lezers tegelijk ondersteunen, zolang de verzameling niet wordt gewijzigd. Om de veiligheid van de SortedListdraad te garanderen, moeten alle bewerkingen worden uitgevoerd via de wrapper die door de Synchronized(SortedList) methode wordt geretourneerd.

Het inventariseren via een verzameling is intrinsiek geen threadveilige procedure. Zelfs wanneer een verzameling wordt gesynchroniseerd, kunnen andere threads de verzameling nog steeds wijzigen, waardoor de enumerator een uitzondering genereert. Om de veiligheid van threads tijdens de inventarisatie te garanderen, kunt u de verzameling vergrendelen tijdens de volledige inventarisatie of de uitzonderingen ondervangen die het gevolg zijn van wijzigingen die door andere threads zijn aangebracht.

Zie ook