Dictionary<TKey,TValue> Construtores
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.
Inicializa uma nova instância da classe Dictionary<TKey,TValue>.
Sobrecargas
Dictionary<TKey,TValue>() |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial padrão e usa o comparador de igualdade padrão para o tipo de chave. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém os elementos copiados do IDictionary<TKey,TValue> especificado e usa o comparador de igualdade padrão para o tipo de chave. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém elementos copiados do IEnumerable<T> especificado. |
Dictionary<TKey,TValue>(IEqualityComparer<TKey>) |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial padrão e usa o IEqualityComparer<T> especificado. |
Dictionary<TKey,TValue>(Int32) |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial especificada e usa o comparador de igualdade padrão para o tipo de chave. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém elementos copiados da IDictionary<TKey,TValue> especificada e usa o IEqualityComparer<T> especificado. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém elementos copiados da IEnumerable<T> especificada e usa o IEqualityComparer<T> especificado. |
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) |
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial especificada e usa o IEqualityComparer<T> especificado. |
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) |
Obsoleto.
Inicializa uma nova instância da classe Dictionary<TKey,TValue> com dados serializados. |
Dictionary<TKey,TValue>()
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial padrão e usa o comparador de igualdade padrão para o tipo de chave.
public:
Dictionary();
public Dictionary ();
Public Sub New ()
Exemplos
O exemplo de código a seguir cria um vazio Dictionary<TKey,TValue> de cadeias de caracteres com chaves de cadeia de caracteres e usa o Add método para adicionar alguns elementos. O exemplo demonstra que o Add método lança um ArgumentException ao tentar adicionar uma chave duplicada.
Este exemplo de código faz parte de um exemplo maior fornecido para a Dictionary<TKey,TValue> classe .
// Create a new dictionary of strings, with string keys.
//
Dictionary<String^, String^>^ openWith =
gcnew Dictionary<String^, String^>();
// Add some elements to the dictionary. There are no
// duplicate keys, but some of the values are duplicates.
openWith->Add("txt", "notepad.exe");
openWith->Add("bmp", "paint.exe");
openWith->Add("dib", "paint.exe");
openWith->Add("rtf", "wordpad.exe");
// The Add method throws an exception if the new key is
// already in the dictionary.
try
{
openWith->Add("txt", "winword.exe");
}
catch (ArgumentException^)
{
Console::WriteLine("An element with Key = \"txt\" already exists.");
}
// Create a new dictionary of strings, with string keys.
//
Dictionary<string, string> openWith =
new Dictionary<string, string>();
// Add some elements to the dictionary. There are no
// duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
// The Add method throws an exception if the new key is
// already in the dictionary.
try
{
openWith.Add("txt", "winword.exe");
}
catch (ArgumentException)
{
Console.WriteLine("An element with Key = \"txt\" already exists.");
}
' Create a new dictionary of strings, with string keys.
'
Dim openWith As New Dictionary(Of String, String)
' Add some elements to the dictionary. There are no
' duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe")
openWith.Add("bmp", "paint.exe")
openWith.Add("dib", "paint.exe")
openWith.Add("rtf", "wordpad.exe")
' The Add method throws an exception if the new key is
' already in the dictionary.
Try
openWith.Add("txt", "winword.exe")
Catch
Console.WriteLine("An element with Key = ""txt"" already exists.")
End Try
Comentários
Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador de igualdade padrão.
Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais. Esse construtor usa o comparador de igualdade genérica padrão, EqualityComparer<T>.Default. Caso o tipo TKey
implemente a interface genérica System.IEquatable<T>, a comparação de igualdade padrão usa essa implementação. Como alternativa, você pode especificar uma implementação da IEqualityComparer<T> interface genérica usando um construtor que aceita um comparer
parâmetro .
Observação
Se você puder estimar o tamanho da coleção, usar um construtor que especifica a capacidade inicial eliminará a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Dictionary<TKey,TValue>.
Este construtor é uma operação O(1).
Confira também
Aplica-se a
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém os elementos copiados do IDictionary<TKey,TValue> especificado e usa o comparador de igualdade padrão para o tipo de chave.
public:
Dictionary(System::Collections::Generic::IDictionary<TKey, TValue> ^ dictionary);
public Dictionary (System.Collections.Generic.IDictionary<TKey,TValue> dictionary);
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Collections.Generic.IDictionary<'Key, 'Value> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (dictionary As IDictionary(Of TKey, TValue))
Parâmetros
- dictionary
- IDictionary<TKey,TValue>
O IDictionary<TKey,TValue> cujos elementos são copiados para o novo Dictionary<TKey,TValue>.
Exceções
dictionary
é null
.
dictionary
contém uma ou mais chaves duplicadas.
Exemplos
O exemplo de código a seguir mostra como usar o Dictionary<TKey,TValue>(IEqualityComparer<TKey>) construtor para inicializar um Dictionary<TKey,TValue> com conteúdo classificado de outro dicionário. O exemplo de código cria um SortedDictionary<TKey,TValue> e o preenche com dados em ordem aleatória e, em seguida, passa o SortedDictionary<TKey,TValue> para o Dictionary<TKey,TValue>(IEqualityComparer<TKey>) construtor, criando um Dictionary<TKey,TValue> classificado. Isso será útil se você precisar criar um dicionário classificado que, em algum momento, se torne estático; copiar os dados de um SortedDictionary<TKey,TValue> para um Dictionary<TKey,TValue> melhora a velocidade de recuperação.
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
// Create a new sorted dictionary of strings, with string
// keys.
SortedDictionary<string, string> openWith =
new SortedDictionary<string, string>();
// Add some elements to the dictionary.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
// Create a Dictionary of strings with string keys, and
// initialize it with the contents of the sorted dictionary.
Dictionary<string, string> copy =
new Dictionary<string, string>(openWith);
// List the contents of the copy.
Console.WriteLine();
foreach( KeyValuePair<string, string> kvp in copy )
{
Console.WriteLine("Key = {0}, Value = {1}",
kvp.Key, kvp.Value);
}
}
}
/* This code example produces the following output:
Key = bmp, Value = paint.exe
Key = dib, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
*/
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
' Create a new sorted dictionary of strings, with string
' keys.
Dim openWith As New SortedDictionary(Of String, String)
' Add some elements to the sorted dictionary.
openWith.Add("txt", "notepad.exe")
openWith.Add("bmp", "paint.exe")
openWith.Add("dib", "paint.exe")
openWith.Add("rtf", "wordpad.exe")
' Create a Dictionary of strings with string keys, and
' initialize it with the contents of the sorted dictionary.
Dim copy As New Dictionary(Of String, String)(openWith)
' List the contents of the copy.
Console.WriteLine()
For Each kvp As KeyValuePair(Of String, String) In copy
Console.WriteLine("Key = {0}, Value = {1}", _
kvp.Key, kvp.Value)
Next kvp
End Sub
End Class
' This code example produces the following output:
'
'Key = bmp, Value = paint.exe
'Key = dib, Value = paint.exe
'Key = rtf, Value = wordpad.exe
'Key = txt, Value = notepad.exe
Comentários
Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador de igualdade padrão; da mesma forma, cada chave na origem dictionary
também deve ser exclusiva de acordo com o comparador de igualdade padrão.
A capacidade inicial do novo Dictionary<TKey,TValue> é grande o suficiente para conter todos os elementos em dictionary
.
Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais. Esse construtor usa o comparador de igualdade genérica padrão, EqualityComparer<T>.Default. Caso o tipo TKey
implemente a interface genérica System.IEquatable<T>, a comparação de igualdade padrão usa essa implementação. Como alternativa, você pode especificar uma implementação da IEqualityComparer<T> interface genérica usando um construtor que aceita um comparer
parâmetro .
Esse construtor é uma operação O(n), em que n é o número de elementos em dictionary
.
Confira também
Aplica-se a
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém elementos copiados do IEnumerable<T> especificado.
public:
Dictionary(System::Collections::Generic::IEnumerable<System::Collections::Generic::KeyValuePair<TKey, TValue>> ^ collection);
public Dictionary (System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>> collection);
new System.Collections.Generic.Dictionary<'Key, 'Value> : seq<System.Collections.Generic.KeyValuePair<'Key, 'Value>> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (collection As IEnumerable(Of KeyValuePair(Of TKey, TValue)))
Parâmetros
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
O IEnumerable<T> cujos elementos são copiados para o novo Dictionary<TKey,TValue>.
Exceções
collection
é null
.
collection
contém uma ou mais chaves duplicadas.
Aplica-se a
Dictionary<TKey,TValue>(IEqualityComparer<TKey>)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial padrão e usa o IEqualityComparer<T> especificado.
public:
Dictionary(System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (System.Collections.Generic.IEqualityComparer<TKey> comparer);
public Dictionary (System.Collections.Generic.IEqualityComparer<TKey>? comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (comparer As IEqualityComparer(Of TKey))
Parâmetros
- comparer
- IEqualityComparer<TKey>
A implementação IEqualityComparer<T> a ser usada na comparação de chaves ou null
para usar o EqualityComparer<T> padrão para o tipo de chave.
Exemplos
O exemplo de código a seguir cria um Dictionary<TKey,TValue> com um comparador de igualdade que não diferencia maiúsculas de minúsculas para a cultura atual. O exemplo adiciona quatro elementos, alguns com teclas minúsculas e alguns com teclas maiúsculas. Em seguida, o exemplo tenta adicionar um elemento com uma chave que difere de uma chave existente apenas por caso, captura a exceção resultante e exibe uma mensagem de erro. Por fim, o exemplo exibe os elementos no dicionário.
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
// Create a new Dictionary of strings, with string keys
// and a case-insensitive comparer for the current culture.
Dictionary<string, string> openWith =
new Dictionary<string, string>(
StringComparer.CurrentCultureIgnoreCase);
// Add some elements to the dictionary.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("DIB", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
// Try to add a fifth element with a key that is the same
// except for case; this would be allowed with the default
// comparer.
try
{
openWith.Add("BMP", "paint.exe");
}
catch (ArgumentException)
{
Console.WriteLine("\nBMP is already in the dictionary.");
}
// List the contents of the sorted dictionary.
Console.WriteLine();
foreach( KeyValuePair<string, string> kvp in openWith )
{
Console.WriteLine("Key = {0}, Value = {1}", kvp.Key,
kvp.Value);
}
}
}
/* This code example produces the following output:
BMP is already in the dictionary.
Key = txt, Value = notepad.exe
Key = bmp, Value = paint.exe
Key = DIB, Value = paint.exe
Key = rtf, Value = wordpad.exe
*/
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
' Create a new Dictionary of strings, with string keys
' and a case-insensitive comparer for the current culture.
Dim openWith As New Dictionary(Of String, String)( _
StringComparer.CurrentCultureIgnoreCase)
' Add some elements to the dictionary.
openWith.Add("txt", "notepad.exe")
openWith.Add("bmp", "paint.exe")
openWith.Add("DIB", "paint.exe")
openWith.Add("rtf", "wordpad.exe")
' Try to add a fifth element with a key that is the same
' except for case; this would be allowed with the default
' comparer.
Try
openWith.Add("BMP", "paint.exe")
Catch ex As ArgumentException
Console.WriteLine(vbLf & "BMP is already in the dictionary.")
End Try
' List the contents of the dictionary.
Console.WriteLine()
For Each kvp As KeyValuePair(Of String, String) In openWith
Console.WriteLine("Key = {0}, Value = {1}", _
kvp.Key, kvp.Value)
Next kvp
End Sub
End Class
' This code example produces the following output:
'
'BMP is already in the dictionary.
'
'Key = txt, Value = notepad.exe
'Key = bmp, Value = paint.exe
'Key = DIB, Value = paint.exe
'Key = rtf, Value = wordpad.exe
Comentários
Use esse construtor com os comparadores de cadeia de caracteres que não diferenciam maiúsculas de minúsculas fornecidos pela StringComparer classe para criar dicionários com chaves de cadeia de caracteres que não diferenciam maiúsculas de minúsculas.
Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador especificado.
Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais. Se comparer
for null
, esse construtor usará o comparador de igualdade genérica padrão, EqualityComparer<T>.Default. Caso o tipo TKey
implemente a interface genérica System.IEquatable<T>, a comparação de igualdade padrão usa essa implementação.
Observação
Se você puder estimar o tamanho da coleção, usar um construtor que especifica a capacidade inicial eliminará a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Dictionary<TKey,TValue>.
Este construtor é uma operação O(1).
Confira também
Aplica-se a
Dictionary<TKey,TValue>(Int32)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial especificada e usa o comparador de igualdade padrão para o tipo de chave.
public:
Dictionary(int capacity);
public Dictionary (int capacity);
new System.Collections.Generic.Dictionary<'Key, 'Value> : int -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (capacity As Integer)
Parâmetros
- capacity
- Int32
O número inicial de elementos que o Dictionary<TKey,TValue> pode conter.
Exceções
capacity
é menor que 0.
Exemplos
O exemplo de código a seguir cria um dicionário com uma capacidade inicial de 4 e o preenche com 4 entradas.
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
// Create a new dictionary of strings, with string keys and
// an initial capacity of 4.
Dictionary<string, string> openWith =
new Dictionary<string, string>(4);
// Add 4 elements to the dictionary.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
// List the contents of the dictionary.
Console.WriteLine();
foreach( KeyValuePair<string, string> kvp in openWith )
{
Console.WriteLine("Key = {0}, Value = {1}",
kvp.Key, kvp.Value);
}
}
}
/* This code example produces the following output:
Key = txt, Value = notepad.exe
Key = bmp, Value = paint.exe
Key = dib, Value = paint.exe
Key = rtf, Value = wordpad.exe
*/
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
' Create a new dictionary of strings, with string keys and
' an initial capacity of 4.
Dim openWith As New Dictionary(Of String, String)(4)
' Add 4 elements to the dictionary.
openWith.Add("txt", "notepad.exe")
openWith.Add("bmp", "paint.exe")
openWith.Add("dib", "paint.exe")
openWith.Add("rtf", "wordpad.exe")
' List the contents of the dictionary.
Console.WriteLine()
For Each kvp As KeyValuePair(Of String, String) In openWith
Console.WriteLine("Key = {0}, Value = {1}", _
kvp.Key, kvp.Value)
Next kvp
End Sub
End Class
' This code example produces the following output:
'
'Key = txt, Value = notepad.exe
'Key = bmp, Value = paint.exe
'Key = dib, Value = paint.exe
'Key = rtf, Value = wordpad.exe
Comentários
Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador de igualdade padrão.
A capacidade de um Dictionary<TKey,TValue> é o número de elementos que podem ser adicionados ao antes que o Dictionary<TKey,TValue> redimensionamento seja necessário. À medida que os elementos são adicionados a um Dictionary<TKey,TValue>, a capacidade é automaticamente aumentada conforme exigido pela realocação da matriz interna.
Se o tamanho da coleção puder ser estimado, especificar a capacidade inicial eliminará a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Dictionary<TKey,TValue>.
Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais. Esse construtor usa o comparador de igualdade genérica padrão, EqualityComparer<T>.Default. Caso o tipo TKey
implemente a interface genérica System.IEquatable<T>, a comparação de igualdade padrão usa essa implementação. Como alternativa, você pode especificar uma implementação da IEqualityComparer<T> interface genérica usando um construtor que aceita um comparer
parâmetro .
Este construtor é uma operação O(1).
Confira também
Aplica-se a
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém elementos copiados da IDictionary<TKey,TValue> especificada e usa o IEqualityComparer<T> especificado.
public:
Dictionary(System::Collections::Generic::IDictionary<TKey, TValue> ^ dictionary, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (System.Collections.Generic.IDictionary<TKey,TValue> dictionary, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public Dictionary (System.Collections.Generic.IDictionary<TKey,TValue> dictionary, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Collections.Generic.IDictionary<'Key, 'Value> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (dictionary As IDictionary(Of TKey, TValue), comparer As IEqualityComparer(Of TKey))
Parâmetros
- dictionary
- IDictionary<TKey,TValue>
O IDictionary<TKey,TValue> cujos elementos são copiados para o novo Dictionary<TKey,TValue>.
- comparer
- IEqualityComparer<TKey>
A implementação IEqualityComparer<T> a ser usada na comparação de chaves ou null
para usar o EqualityComparer<T> padrão para o tipo de chave.
Exceções
dictionary
é null
.
dictionary
contém uma ou mais chaves duplicadas.
Exemplos
O exemplo de código a seguir mostra como usar o Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) construtor para inicializar um Dictionary<TKey,TValue> com conteúdo classificado que não diferencia maiúsculas de minúsculas de outro dicionário. O exemplo de código cria um SortedDictionary<TKey,TValue> com um comparador que não diferencia maiúsculas de minúsculas e o preenche com dados em ordem aleatória e, em seguida, passa o SortedDictionary<TKey,TValue> para o Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) construtor, juntamente com um comparador de igualdade que não diferencia maiúsculas de minúsculas, criando um Dictionary<TKey,TValue> classificado. Isso será útil se você precisar criar um dicionário classificado que, em algum momento, se torne estático; copiar os dados de um SortedDictionary<TKey,TValue> para um Dictionary<TKey,TValue> melhora a velocidade de recuperação.
Observação
Quando você cria um novo dicionário com um comparador que não diferencia maiúsculas de minúsculas e o preenche com entradas de um dicionário que usa um comparador que diferencia maiúsculas de minúsculas, como neste exemplo, ocorrerá uma exceção se o dicionário de entrada tiver chaves que diferem apenas por caso.
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
// Create a new sorted dictionary of strings, with string
// keys and a case-insensitive comparer.
SortedDictionary<string, string> openWith =
new SortedDictionary<string, string>(
StringComparer.CurrentCultureIgnoreCase);
// Add some elements to the dictionary.
openWith.Add("txt", "notepad.exe");
openWith.Add("Bmp", "paint.exe");
openWith.Add("DIB", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
// Create a Dictionary of strings with string keys and a
// case-insensitive equality comparer, and initialize it
// with the contents of the sorted dictionary.
Dictionary<string, string> copy =
new Dictionary<string, string>(openWith,
StringComparer.CurrentCultureIgnoreCase);
// List the contents of the copy.
Console.WriteLine();
foreach( KeyValuePair<string, string> kvp in copy )
{
Console.WriteLine("Key = {0}, Value = {1}",
kvp.Key, kvp.Value);
}
}
}
/* This code example produces the following output:
Key = Bmp, Value = paint.exe
Key = DIB, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
*/
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
' Create a new sorted dictionary of strings, with string
' keys and a case-insensitive comparer.
Dim openWith As New SortedDictionary(Of String, String)( _
StringComparer.CurrentCultureIgnoreCase)
' Add some elements to the sorted dictionary.
openWith.Add("txt", "notepad.exe")
openWith.Add("Bmp", "paint.exe")
openWith.Add("DIB", "paint.exe")
openWith.Add("rtf", "wordpad.exe")
' Create a Dictionary of strings with string keys and a
' case-insensitive equality comparer, and initialize it
' with the contents of the sorted dictionary.
Dim copy As New Dictionary(Of String, String)(openWith, _
StringComparer.CurrentCultureIgnoreCase)
' List the contents of the copy.
Console.WriteLine()
For Each kvp As KeyValuePair(Of String, String) In copy
Console.WriteLine("Key = {0}, Value = {1}", _
kvp.Key, kvp.Value)
Next kvp
End Sub
End Class
' This code example produces the following output:
'
'Key = Bmp, Value = paint.exe
'Key = DIB, Value = paint.exe
'Key = rtf, Value = wordpad.exe
'Key = txt, Value = notepad.exe
Comentários
Use esse construtor com os comparadores de cadeia de caracteres que não diferenciam maiúsculas de minúsculas fornecidos pela StringComparer classe para criar dicionários com chaves de cadeia de caracteres que não diferenciam maiúsculas de minúsculas.
Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador especificado; da mesma forma, cada chave na origem dictionary
também deve ser exclusiva de acordo com o comparador especificado.
Observação
Por exemplo, chaves duplicadas poderão ocorrer se comparer
for um dos comparadores de cadeia de caracteres que não diferenciam maiúsculas de minúsculas fornecidos pela StringComparer classe e dictionary
não usar uma chave comparador que não diferencia maiúsculas de minúsculas.
A capacidade inicial do novo Dictionary<TKey,TValue> é grande o suficiente para conter todos os elementos em dictionary
.
Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais. Se comparer
for null
, esse construtor usará o comparador de igualdade genérica padrão, EqualityComparer<T>.Default. Caso o tipo TKey
implemente a interface genérica System.IEquatable<T>, a comparação de igualdade padrão usa essa implementação.
Esse construtor é uma operação O(n
), em que n
é o número de elementos em dictionary
.
Confira também
Aplica-se a
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que contém elementos copiados da IEnumerable<T> especificada e usa o IEqualityComparer<T> especificado.
public:
Dictionary(System::Collections::Generic::IEnumerable<System::Collections::Generic::KeyValuePair<TKey, TValue>> ^ collection, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>> collection, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
public Dictionary (System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>> collection, System.Collections.Generic.IEqualityComparer<TKey> comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : seq<System.Collections.Generic.KeyValuePair<'Key, 'Value>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (collection As IEnumerable(Of KeyValuePair(Of TKey, TValue)), comparer As IEqualityComparer(Of TKey))
Parâmetros
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
O IEnumerable<T> cujos elementos são copiados para o novo Dictionary<TKey,TValue>.
- comparer
- IEqualityComparer<TKey>
A implementação IEqualityComparer<T> a ser usada na comparação de chaves ou null
para usar o EqualityComparer<T> padrão para o tipo de chave.
Exceções
collection
é null
.
collection
contém uma ou mais chaves duplicadas.
Aplica-se a
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Inicializa uma nova instância da classe Dictionary<TKey,TValue> que está vazia, tem a capacidade inicial especificada e usa o IEqualityComparer<T> especificado.
public:
Dictionary(int capacity, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (int capacity, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public Dictionary (int capacity, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : int * System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (capacity As Integer, comparer As IEqualityComparer(Of TKey))
Parâmetros
- capacity
- Int32
O número inicial de elementos que o Dictionary<TKey,TValue> pode conter.
- comparer
- IEqualityComparer<TKey>
A implementação IEqualityComparer<T> a ser usada na comparação de chaves ou null
para usar o EqualityComparer<T> padrão para o tipo de chave.
Exceções
capacity
é menor que 0.
Exemplos
O exemplo de código a seguir cria um Dictionary<TKey,TValue> com uma capacidade inicial de 5 e um comparador de igualdade que não diferencia maiúsculas de minúsculas para a cultura atual. O exemplo adiciona quatro elementos, alguns com teclas minúsculas e alguns com teclas maiúsculas. Em seguida, o exemplo tenta adicionar um elemento com uma chave que difere de uma chave existente apenas por caso, captura a exceção resultante e exibe uma mensagem de erro. Por fim, o exemplo exibe os elementos no dicionário.
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
// Create a new dictionary of strings, with string keys, an
// initial capacity of 5, and a case-insensitive equality
// comparer.
Dictionary<string, string> openWith =
new Dictionary<string, string>(5,
StringComparer.CurrentCultureIgnoreCase);
// Add 4 elements to the dictionary.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("DIB", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
// Try to add a fifth element with a key that is the same
// except for case; this would be allowed with the default
// comparer.
try
{
openWith.Add("BMP", "paint.exe");
}
catch (ArgumentException)
{
Console.WriteLine("\nBMP is already in the dictionary.");
}
// List the contents of the dictionary.
Console.WriteLine();
foreach( KeyValuePair<string, string> kvp in openWith )
{
Console.WriteLine("Key = {0}, Value = {1}", kvp.Key,
kvp.Value);
}
}
}
/* This code example produces the following output:
BMP is already in the dictionary.
Key = txt, Value = notepad.exe
Key = bmp, Value = paint.exe
Key = DIB, Value = paint.exe
Key = rtf, Value = wordpad.exe
*/
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
' Create a new Dictionary of strings, with string keys, an
' initial capacity of 5, and a case-insensitive equality
' comparer.
Dim openWith As New Dictionary(Of String, String)(5, _
StringComparer.CurrentCultureIgnoreCase)
' Add 4 elements to the dictionary.
openWith.Add("txt", "notepad.exe")
openWith.Add("bmp", "paint.exe")
openWith.Add("DIB", "paint.exe")
openWith.Add("rtf", "wordpad.exe")
' Try to add a fifth element with a key that is the same
' except for case; this would be allowed with the default
' comparer.
Try
openWith.Add("BMP", "paint.exe")
Catch ex As ArgumentException
Console.WriteLine(vbLf & "BMP is already in the dictionary.")
End Try
' List the contents of the dictionary.
Console.WriteLine()
For Each kvp As KeyValuePair(Of String, String) In openWith
Console.WriteLine("Key = {0}, Value = {1}", _
kvp.Key, kvp.Value)
Next kvp
End Sub
End Class
' This code example produces the following output:
'
'BMP is already in the dictionary.
'
'Key = txt, Value = notepad.exe
'Key = bmp, Value = paint.exe
'Key = DIB, Value = paint.exe
'Key = rtf, Value = wordpad.exe
Comentários
Use esse construtor com os comparadores de cadeia de caracteres que não diferenciam maiúsculas de minúsculas fornecidos pela StringComparer classe para criar dicionários com chaves de cadeia de caracteres que não diferenciam maiúsculas de minúsculas.
Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador especificado.
A capacidade de um Dictionary<TKey,TValue> é o número de elementos que podem ser adicionados ao antes que o Dictionary<TKey,TValue> redimensionamento seja necessário. À medida que os elementos são adicionados a um Dictionary<TKey,TValue>, a capacidade é automaticamente aumentada conforme exigido pela realocação da matriz interna.
Se o tamanho da coleção puder ser estimado, especificar a capacidade inicial eliminará a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Dictionary<TKey,TValue>.
Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais. Se comparer
for null
, esse construtor usará o comparador de igualdade genérica padrão, EqualityComparer<T>.Default. Caso o tipo TKey
implemente a interface genérica System.IEquatable<T>, a comparação de igualdade padrão usa essa implementação.
Este construtor é uma operação O(1).
Confira também
Aplica-se a
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
- Origem:
- Dictionary.cs
Cuidado
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Inicializa uma nova instância da classe Dictionary<TKey,TValue> com dados serializados.
protected:
Dictionary(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
protected Dictionary (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected Dictionary (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Generic.Dictionary<'Key, 'Value>
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Generic.Dictionary<'Key, 'Value>
Protected Sub New (info As SerializationInfo, context As StreamingContext)
Parâmetros
- info
- SerializationInfo
Um objeto SerializationInfo que contém as informações necessárias para serializar o Dictionary<TKey,TValue>.
- context
- StreamingContext
Uma estrutura StreamingContext que contém a origem e o destino do fluxo serializado associado ao Dictionary<TKey,TValue>.
- Atributos
Comentários
Esse construtor é chamado durante a desserialização para reconstituir um objeto transmitido por um fluxo. Para obter mais informações, consulte serialização XML e SOAP.