StringDictionary Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Implementa uma tabela de hash com a chave e o valor fortemente tipado para ser cadeias de caracteres em vez de objetos.
public ref class StringDictionary : System::Collections::IEnumerable
public class StringDictionary : System.Collections.IEnumerable
[System.Serializable]
public class StringDictionary : System.Collections.IEnumerable
type StringDictionary = class
interface IEnumerable
[<System.Serializable>]
type StringDictionary = class
interface IEnumerable
Public Class StringDictionary
Implements IEnumerable
- Herança
-
StringDictionary
- Atributos
- Implementações
Exemplos
O exemplo de código a seguir demonstra várias das propriedades e métodos de StringDictionary.
using System;
using System.Collections;
using System.Collections.Specialized;
public class SamplesStringDictionary {
public static void Main() {
// Creates and initializes a new StringDictionary.
StringDictionary myCol = new StringDictionary();
myCol.Add( "red", "rojo" );
myCol.Add( "green", "verde" );
myCol.Add( "blue", "azul" );
// Display the contents of the collection using foreach. This is the preferred method.
Console.WriteLine( "Displays the elements using foreach:" );
PrintKeysAndValues1( myCol );
// Display the contents of the collection using the enumerator.
Console.WriteLine( "Displays the elements using the IEnumerator:" );
PrintKeysAndValues2( myCol );
// Display the contents of the collection using the Keys, Values, Count, and Item properties.
Console.WriteLine( "Displays the elements using the Keys, Values, Count, and Item properties:" );
PrintKeysAndValues3( myCol );
// Copies the StringDictionary to an array with DictionaryEntry elements.
DictionaryEntry[] myArr = new DictionaryEntry[myCol.Count];
myCol.CopyTo( myArr, 0 );
// Displays the values in the array.
Console.WriteLine( "Displays the elements in the array:" );
Console.WriteLine( " KEY VALUE" );
for ( int i = 0; i < myArr.Length; i++ )
Console.WriteLine( " {0,-10} {1}", myArr[i].Key, myArr[i].Value );
Console.WriteLine();
// Searches for a value.
if ( myCol.ContainsValue( "amarillo" ) )
Console.WriteLine( "The collection contains the value \"amarillo\"." );
else
Console.WriteLine( "The collection does not contain the value \"amarillo\"." );
Console.WriteLine();
// Searches for a key and deletes it.
if ( myCol.ContainsKey( "green" ) )
myCol.Remove( "green" );
Console.WriteLine( "The collection contains the following elements after removing \"green\":" );
PrintKeysAndValues1( myCol );
// Clears the entire collection.
myCol.Clear();
Console.WriteLine( "The collection contains the following elements after it is cleared:" );
PrintKeysAndValues1( myCol );
}
// Uses the foreach statement which hides the complexity of the enumerator.
// NOTE: The foreach statement is the preferred way of enumerating the contents of a collection.
public static void PrintKeysAndValues1( StringDictionary myCol ) {
Console.WriteLine( " KEY VALUE" );
foreach ( DictionaryEntry de in myCol )
Console.WriteLine( " {0,-25} {1}", de.Key, de.Value );
Console.WriteLine();
}
// Uses the enumerator.
// NOTE: The foreach statement is the preferred way of enumerating the contents of a collection.
public static void PrintKeysAndValues2( StringDictionary myCol ) {
IEnumerator myEnumerator = myCol.GetEnumerator();
DictionaryEntry de;
Console.WriteLine( " KEY VALUE" );
while ( myEnumerator.MoveNext() ) {
de = (DictionaryEntry) myEnumerator.Current;
Console.WriteLine( " {0,-25} {1}", de.Key, de.Value );
}
Console.WriteLine();
}
// Uses the Keys, Values, Count, and Item properties.
public static void PrintKeysAndValues3( StringDictionary myCol ) {
String[] myKeys = new String[myCol.Count];
myCol.Keys.CopyTo( myKeys, 0 );
Console.WriteLine( " INDEX KEY VALUE" );
for ( int i = 0; i < myCol.Count; i++ )
Console.WriteLine( " {0,-5} {1,-25} {2}", i, myKeys[i], myCol[myKeys[i]] );
Console.WriteLine();
}
}
/*
This code produces the following output.
Displays the elements using foreach:
KEY VALUE
red rojo
blue azul
green verde
Displays the elements using the IEnumerator:
KEY VALUE
red rojo
blue azul
green verde
Displays the elements using the Keys, Values, Count, and Item properties:
INDEX KEY VALUE
0 red rojo
1 blue azul
2 green verde
Displays the elements in the array:
KEY VALUE
red rojo
blue azul
green verde
The collection does not contain the value "amarillo".
The collection contains the following elements after removing "green":
KEY VALUE
red rojo
blue azul
The collection contains the following elements after it is cleared:
KEY VALUE
*/
Imports System.Collections
Imports System.Collections.Specialized
Public Class SamplesStringDictionary
Public Shared Sub Main()
' Creates and initializes a new StringDictionary.
Dim myCol As New StringDictionary()
myCol.Add("red", "rojo")
myCol.Add("green", "verde")
myCol.Add("blue", "azul")
' Display the contents of the collection using For Each. This is the preferred method.
Console.WriteLine("Displays the elements using For Each:")
PrintKeysAndValues1(myCol)
' Display the contents of the collection using the enumerator.
Console.WriteLine("Displays the elements using the IEnumerator:")
PrintKeysAndValues2(myCol)
' Display the contents of the collection using the Keys, Values, Count, and Item properties.
Console.WriteLine("Displays the elements using the Keys, Values, Count, and Item properties:")
PrintKeysAndValues3(myCol)
' Copies the StringDictionary to an array with DictionaryEntry elements.
Dim myArr(myCol.Count) As DictionaryEntry
myCol.CopyTo(myArr, 0)
' Displays the values in the array.
Console.WriteLine("Displays the elements in the array:")
Console.WriteLine(" KEY VALUE")
Dim i As Integer
For i = 0 To myArr.Length - 1
Console.WriteLine(" {0,-10} {1}", myArr(i).Key, myArr(i).Value)
Next i
Console.WriteLine()
' Searches for a value.
If myCol.ContainsValue("amarillo") Then
Console.WriteLine("The collection contains the value ""amarillo"".")
Else
Console.WriteLine("The collection does not contain the value ""amarillo"".")
End If
Console.WriteLine()
' Searches for a key and deletes it.
If myCol.ContainsKey("green") Then
myCol.Remove("green")
End If
Console.WriteLine("The collection contains the following elements after removing ""green"":")
PrintKeysAndValues1(myCol)
' Clears the entire collection.
myCol.Clear()
Console.WriteLine("The collection contains the following elements after it is cleared:")
PrintKeysAndValues1(myCol)
End Sub
' Uses the For Each statement which hides the complexity of the enumerator.
' NOTE: The For Each statement is the preferred way of enumerating the contents of a collection.
Public Shared Sub PrintKeysAndValues1(myCol As StringDictionary)
Console.WriteLine(" KEY VALUE")
Dim de As DictionaryEntry
For Each de In myCol
Console.WriteLine(" {0,-25} {1}", de.Key, de.Value)
Next de
Console.WriteLine()
End Sub
' Uses the enumerator.
' NOTE: The For Each statement is the preferred way of enumerating the contents of a collection.
Public Shared Sub PrintKeysAndValues2(myCol As StringDictionary)
Dim myEnumerator As IEnumerator = myCol.GetEnumerator()
Dim de As DictionaryEntry
Console.WriteLine(" KEY VALUE")
While myEnumerator.MoveNext()
de = CType(myEnumerator.Current, DictionaryEntry)
Console.WriteLine(" {0,-25} {1}", de.Key, de.Value)
End While
Console.WriteLine()
End Sub
' Uses the Keys, Values, Count, and Item properties.
Public Shared Sub PrintKeysAndValues3(myCol As StringDictionary)
Dim myKeys(myCol.Count) As String
myCol.Keys.CopyTo(myKeys, 0)
Console.WriteLine(" INDEX KEY VALUE")
Dim i As Integer
For i = 0 To myCol.Count - 1
Console.WriteLine(" {0,-5} {1,-25} {2}", i, myKeys(i), myCol(myKeys(i)))
Next i
Console.WriteLine()
End Sub
End Class
'This code produces the following output.
'
'Displays the elements using For Each:
' KEY VALUE
' red rojo
' blue azul
' green verde
'
'Displays the elements using the IEnumerator:
' KEY VALUE
' red rojo
' blue azul
' green verde
'
'Displays the elements using the Keys, Values, Count, and Item properties:
' INDEX KEY VALUE
' 0 red rojo
' 1 blue azul
' 2 green verde
'
'Displays the elements in the array:
' KEY VALUE
' red rojo
' blue azul
' green verde
'
'
'The collection does not contain the value "amarillo".
'
'The collection contains the following elements after removing "green":
' KEY VALUE
' red rojo
' blue azul
'
'The collection contains the following elements after it is cleared:
' KEY VALUE
Comentários
Uma chave não pode ser null, mas um valor pode.
A chave é tratada de maneira que não diferencia maiúsculas de minúsculas; ele é convertido em letras minúsculas antes de ser usado com o dicionário de cadeias de caracteres.
No .NET Framework versão 1.0, essa classe usa comparações de cadeias de caracteres sensíveis à cultura. No entanto, no .NET Framework versão 1.1 e posterior, essa classe usa CultureInfo.InvariantCulture ao comparar cadeias de caracteres. Para obter mais informações sobre como a cultura afeta comparações e classificação, consulte Executar operações de cadeia de caracteres Culture-Insensitive.
Construtores
| Nome | Description |
|---|---|
| StringDictionary() |
Inicializa uma nova instância da classe StringDictionary. |
Propriedades
| Nome | Description |
|---|---|
| Count |
Obtém o número de pares chave/valor no StringDictionary. |
| IsSynchronized |
Obtém um valor que indica se o acesso ao StringDictionary é sincronizado (thread safe). |
| Item[String] |
Obtém ou define o valor associado à chave especificada. |
| Keys |
Obtém uma coleção de chaves no StringDictionary. |
| SyncRoot |
Obtém um objeto que pode ser usado para sincronizar o acesso ao StringDictionary. |
| Values |
Obtém uma coleção de valores no StringDictionary. |
Métodos
| Nome | Description |
|---|---|
| Add(String, String) |
Adiciona uma entrada com a chave e o valor especificados ao StringDictionary. |
| Clear() |
Remove todas as entradas do StringDictionary. |
| ContainsKey(String) |
Determina se a StringDictionary chave contém uma chave específica. |
| ContainsValue(String) |
Determina se o StringDictionary valor contém um valor específico. |
| CopyTo(Array, Int32) |
Copia os valores do dicionário de cadeia de caracteres para uma instância unidimensional Array no índice especificado. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetEnumerator() |
Retorna um enumerador que itera por meio do dicionário de cadeia de caracteres. |
| GetHashCode() |
Serve como a função hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| Remove(String) |
Remove a entrada com a chave especificada do dicionário de cadeia de caracteres. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Métodos de Extensão
| Nome | Description |
|---|---|
| AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |
| Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
Aplica-se a
Acesso thread-safe
Membros estáticos públicos (Shared no Visual Basic) desse tipo são thread safe. Não há garantia de que quaisquer membros de instância sejam thread-safe.
Essa implementação não fornece um wrapper sincronizado (thread safe) para umStringDictionary, mas classes derivadas podem criar suas próprias versões sincronizadas da StringDictionary propriedade usando.SyncRoot
Enumerar por meio de uma coleção não é intrinsecamente um procedimento thread-safe. Mesmo quando uma coleção é sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador gere uma exceção. Para garantir a segurança do thread durante a enumeração, você pode bloquear a coleção durante toda a enumeração ou capturar as exceções resultantes de alterações feitas por outros threads.