CollectionsUtil Třída

Definice

Vytvoří kolekce, které ignorují velikost písmen v řetězcích.

public ref class CollectionsUtil
public class CollectionsUtil
type CollectionsUtil = class
Public Class CollectionsUtil
Dědičnost
CollectionsUtil

Příklady

Následující příklad používá dvě kolekce, tabulku hash a seřazený seznam k uložení hodnot obyvatel pro skupinu měst. Hodnoty se načítají z kolekcí pomocí názvů měst jako klíčů. Názvy měst jsou ve smíšeném případě, aby zobrazovaly jejich použití jako klíče nerozlišující velká a malá písmena.

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

Poznámky

Tyto metody generují instanci kolekce bez rozlišování velkých a malých písmen pomocí implementace zprostředkovatele kódu hash a porovnávače. Výslednou instanci lze použít stejně jako všechny ostatní instance této třídy, i když se může chovat jinak.

Předpokládejme například, že do tabulky hash se přidají dva objekty s klíči "hello" a "HELLO". Tabulka hash rozlišující malá a velká písmena by vytvořila dvě různé položky; zatímco tabulka hash nerozlišující malá a velká písmena vyvolá výjimku při přidání druhého objektu.

Konstruktory

Name Description
CollectionsUtil()

Inicializuje novou instanci CollectionsUtil třídy.

Metody

Name Description
CreateCaseInsensitiveHashtable()

Vytvoří novou instanci Hashtable třídy bez rozlišování malých a velkých písmen s výchozí počáteční kapacitou.

CreateCaseInsensitiveHashtable(IDictionary)

Zkopíruje položky ze zadaného slovníku do nové instance Hashtable třídy bez rozlišování velkých a malých písmen se stejnou počáteční kapacitou jako počet zkopírovaných položek.

CreateCaseInsensitiveHashtable(Int32)

Vytvoří novou instanci Hashtable třídy bez rozlišování malých a velkých písmen se zadanou počáteční kapacitou.

CreateCaseInsensitiveSortedList()

Vytvoří novou instanci SortedList třídy, která ignoruje velikost písmen řetězců.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Bezpečný přístup z více vláken

A Hashtable může současně podporovat jeden spisovatel a více čtenářů. Aby bylo možné podporovat více zapisovačů, musí být všechny operace provedeny prostřednictvím obálky vrácené metodou Synchronized(Hashtable) .

A SortedList může současně podporovat více čtenářů, pokud se kolekce nezmění. Chcete-li zaručit bezpečnost SortedListvlákna , všechny operace musí být provedeny prostřednictvím obálky vrácené metodou Synchronized(SortedList) .

Výčet prostřednictvím kolekce není vnitřně bezpečným postupem vlákna. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.

Viz také