CollectionsUtil Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea raccolte che ignorano la distinzione tra maiuscole e minuscole nelle stringhe.
public ref class CollectionsUtil
public class CollectionsUtil
type CollectionsUtil = class
Public Class CollectionsUtil
- Ereditarietà
-
CollectionsUtil
Esempio
Nell'esempio seguente vengono utilizzate due raccolte, una tabella hash e un elenco ordinato, per contenere i valori di popolamento per un gruppo di città. I valori vengono recuperati dalle raccolte usando i nomi delle città come chiavi. I nomi delle città sono in lettere miste per mostrare l'uso come chiavi senza distinzione tra maiuscole e minuscole.
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
Commenti
Questi metodi generano un'istanza senza distinzione tra maiuscole e minuscole della raccolta usando implementazioni senza distinzione tra maiuscole e minuscole del provider di codice hash e dell'operatore di confronto. L'istanza risultante può essere usata come qualsiasi altra istanza di tale classe, anche se può comportarsi in modo diverso.
Si supponga, ad esempio, che due oggetti con le chiavi "hello" e "HELLO" vengano aggiunti a una tabella hash. Una tabella hash con distinzione tra maiuscole e minuscole crea due voci diverse; mentre una tabella hash senza distinzione tra maiuscole e minuscole genera un'eccezione quando si aggiunge il secondo oggetto.
Costruttori
| Nome | Descrizione |
|---|---|
| CollectionsUtil() |
Inizializza una nuova istanza della classe CollectionsUtil. |
Metodi
| Nome | Descrizione |
|---|---|
| CreateCaseInsensitiveHashtable() |
Crea una nuova istanza senza distinzione tra maiuscole e minuscole della Hashtable classe con la capacità iniziale predefinita. |
| CreateCaseInsensitiveHashtable(IDictionary) |
Copia le voci dal dizionario specificato in una nuova istanza senza distinzione tra maiuscole e minuscole della Hashtable classe con la stessa capacità iniziale del numero di voci copiate. |
| CreateCaseInsensitiveHashtable(Int32) |
Crea una nuova istanza senza distinzione tra maiuscole e minuscole della Hashtable classe con la capacità iniziale specificata. |
| CreateCaseInsensitiveSortedList() |
Crea una nuova istanza della SortedList classe che ignora la distinzione tra maiuscole e minuscole delle stringhe. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Si applica a
Thread safety
Un Hashtable può supportare un writer e più lettori contemporaneamente. Per supportare più writer, tutte le operazioni devono essere eseguite tramite il wrapper restituito dal Synchronized(Hashtable) metodo .
Un SortedList può supportare contemporaneamente più lettori, purché la raccolta non venga modificata. Per garantire la thread safety del SortedList, tutte le operazioni devono essere eseguite tramite il wrapper restituito dal metodo Synchronized(SortedList).
L'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread possono comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione o intercettare le eccezioni risultanti dalle modifiche apportate da altri thread.