Dictionary<TKey,TValue> Dictionary<TKey,TValue> Dictionary<TKey,TValue> Dictionary<TKey,TValue> Constructors

Definição

Sobrecargas

Dictionary<TKey,TValue>() Dictionary<TKey,TValue>() 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the default equality comparer for the key type.

Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the default equality comparer for the key type.

Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEqualityComparer<TKey>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IEqualityComparer<T>.

Dictionary<TKey,TValue>(Int32) Dictionary<TKey,TValue>(Int32) Dictionary<TKey,TValue>(Int32) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the default equality comparer for the key type.

Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the specified IEqualityComparer<T>.

Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IEqualityComparer<T>.

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

Inicializa uma nova instância da classe Dictionary<TKey,TValue> com dados serializados.Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data.

Dictionary<TKey,TValue>() Dictionary<TKey,TValue>() 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the default equality comparer for the key type.

public:
 Dictionary();
public Dictionary ();
Public Sub New ()

Exemplos

Observação

Alguns dos exemplos de C# neste artigo são executados no executador de código embutido Try.NET e no playground.Some of the C# examples in this article run in the Try.NET inline code runner and playground. Quando presente, selecione o botão Executar para executar um exemplo em uma janela interativa.When present, select the Run button to run an example in an interactive window. Ao executar o código, é possível modificá-lo e executar o código modificado clicando em Executar novamente.Once you execute the code, you can modify it and run the modified code by selecting Run again. O código modificado será executado na janela interativa ou, se a compilação falhar, a janela interativa exibirá todos as mensagens de erro do compilador C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

O exemplo de código a seguir cria Dictionary<TKey,TValue> uma cadeia de caracteres vazia com chaves de Add cadeia de caracteres e usa o método para adicionar alguns elementos.The following code example creates an empty Dictionary<TKey,TValue> of strings with string keys and uses the Add method to add some elements. O exemplo demonstra que o Add método gera um ArgumentException ao tentar adicionar uma chave duplicada.The example demonstrates that the Add method throws an ArgumentException when attempting to add a duplicate key.

Este exemplo de código faz parte de um exemplo maior fornecido para Dictionary<TKey,TValue> a classe.This code example is part of a larger example provided for the Dictionary<TKey,TValue> class.

// 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.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Esse construtor usa o comparador de igualdade EqualityComparer<T>.Defaultgenérico padrão,.This constructor uses the default generic equality comparer, 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.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Como alternativa, você pode especificar uma implementação da IEqualityComparer<T> interface genérica usando um construtor que aceita um comparer parâmetro.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Observação

Se você puder estimar o tamanho da coleção, usar um construtor que especifica a capacidade inicial elimina a necessidade de executar uma série de operações de redimensionamento ao adicionar Dictionary<TKey,TValue>elementos ao.If you can estimate the size of the collection, using a constructor that specifies the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

Este construtor é uma operação O(1).This constructor is an O(1) operation.

Veja também

Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the default equality comparer for the key type.

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

Exceções

dictionary contém uma ou mais chaves duplicadas.dictionary contains one or more duplicate keys.

Exemplos

O exemplo de código a seguir mostra como usar Dictionary<TKey,TValue>(IEqualityComparer<TKey>) o construtor para inicializar Dictionary<TKey,TValue> um com conteúdo classificado de outro dicionário.The following code example shows how to use the Dictionary<TKey,TValue>(IEqualityComparer<TKey>) constructor to initialize a Dictionary<TKey,TValue> with sorted content from another dictionary. O exemplo de código cria SortedDictionary<TKey,TValue> um e popula-o com dados em ordem aleatória e, em SortedDictionary<TKey,TValue> seguida, Dictionary<TKey,TValue>(IEqualityComparer<TKey>) passa o para o Dictionary<TKey,TValue> Construtor, criando um que é classificado.The code example creates a SortedDictionary<TKey,TValue> and populates it with data in random order, then passes the SortedDictionary<TKey,TValue> to the Dictionary<TKey,TValue>(IEqualityComparer<TKey>) constructor, creating a Dictionary<TKey,TValue> that is sorted. Isso será útil se você precisar criar um dicionário classificado que, em algum momento, se torna estático; copiar os dados de um SortedDictionary<TKey,TValue> para um Dictionary<TKey,TValue> melhora a velocidade de recuperação.This is useful if you need to build a sorted dictionary that at some point becomes static; copying the data from a SortedDictionary<TKey,TValue> to a Dictionary<TKey,TValue> improves retrieval speed.

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 dictionary , todas as chaves na origem também devem ser exclusivas de acordo com o comparador de igualdade padrão.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer; likewise, every key in the source dictionary must also be unique according to the default equality comparer.

A capacidade inicial da nova Dictionary<TKey,TValue> é grande o suficiente para conter todos os elementos no. dictionaryThe initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Esse construtor usa o comparador de igualdade EqualityComparer<T>.Defaultgenérico padrão,.This constructor uses the default generic equality comparer, 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.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Como alternativa, você pode especificar uma implementação da IEqualityComparer<T> interface genérica usando um construtor que aceita um comparer parâmetro.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Esse construtor é uma operação O (n), em que n é o número de elementos dictionaryem.This constructor is an O(n) operation, where n is the number of elements in dictionary.

Veja também

Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)

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>>

Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEqualityComparer<TKey>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IEqualityComparer<T>.

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.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Exemplos

O exemplo de código a seguir Dictionary<TKey,TValue> cria um com um comparador de igualdade que não diferencia maiúsculas de minúsculas para a cultura atual.The following code example creates a Dictionary<TKey,TValue> with a case-insensitive equality comparer for the current culture. O exemplo adiciona quatro elementos, alguns com chaves minúsculas e outros com chaves de letras maiúsculas.The example adds four elements, some with lower-case keys and some with upper-case keys. Em seguida, o exemplo tenta adicionar um elemento com uma chave que difere de uma chave existente somente por caso, captura a exceção resultante e exibe uma mensagem de erro.The example then attempts to add an element with a key that differs from an existing key only by case, catches the resulting exception, and displays an error message. Por fim, o exemplo exibe os elementos no dicionário.Finally, the example displays the elements in the dictionary.

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úsculasUse this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador especificado.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Se comparer EqualityComparer<T>.Defaultfor null, esse construtor usará o comparador de igualdade genérico padrão,.If comparer is null, this constructor uses the default generic equality comparer, 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.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Observação

Se você puder estimar o tamanho da coleção, usar um construtor que especifica a capacidade inicial elimina a necessidade de executar uma série de operações de redimensionamento ao adicionar Dictionary<TKey,TValue>elementos ao.If you can estimate the size of the collection, using a constructor that specifies the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

Este construtor é uma operação O(1).This constructor is an O(1) operation.

Veja também

Dictionary<TKey,TValue>(Int32) Dictionary<TKey,TValue>(Int32) Dictionary<TKey,TValue>(Int32) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the default equality comparer for the key type.

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 Int32 Int32 Int32

O número inicial de elementos que o Dictionary<TKey,TValue> pode conter.The initial number of elements that the Dictionary<TKey,TValue> can contain.

Exceções

Exemplos

O exemplo de código a seguir cria um dicionário com uma capacidade inicial de 4 e o popula com 4 entradas.The following code example creates a dictionary with an initial capacity of 4 and populates it with 4 entries.

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.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

A capacidade de um Dictionary<TKey,TValue> é o número de elementos que podem ser adicionados Dictionary<TKey,TValue> ao redimensionamento anterior é necessário.The capacity of a Dictionary<TKey,TValue> is the number of elements that can be added to the Dictionary<TKey,TValue> before resizing is necessary. À medida que os elementos são Dictionary<TKey,TValue>adicionados a um, a capacidade é aumentada automaticamente conforme necessário, realocando a matriz interna.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Se o tamanho da coleção puder ser estimado, a especificação da capacidade inicial elimina a necessidade de executar uma série de operações de redimensionamento ao Dictionary<TKey,TValue>adicionar elementos ao.If the size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Esse construtor usa o comparador de igualdade EqualityComparer<T>.Defaultgenérico padrão,.This constructor uses the default generic equality comparer, 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.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Como alternativa, você pode especificar uma implementação da IEqualityComparer<T> interface genérica usando um construtor que aceita um comparer parâmetro.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Este construtor é uma operação O(1).This constructor is an O(1) operation.

Veja também

Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the specified IEqualityComparer<T>.

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

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.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Exceções

dictionary contém uma ou mais chaves duplicadas.dictionary contains one or more duplicate keys.

Exemplos

O exemplo de código a seguir mostra como usar Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) o construtor para inicializar Dictionary<TKey,TValue> um com conteúdo classificado com não diferenciação de maiúsculas e minúsculas de outro dicionário.The following code example shows how to use the Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) constructor to initialize a Dictionary<TKey,TValue> with case-insensitive sorted content from another dictionary. O exemplo de código cria SortedDictionary<TKey,TValue> um com um comparador que não diferencia maiúsculas de minúsculas e o popula com dados em SortedDictionary<TKey,TValue> ordem aleatória e, em seguida, passa o para o Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Construtor, juntamente com um Dictionary<TKey,TValue> comparador de igualdade que não diferencia maiúsculas de minúsculas, criando um que está classificado.The code example creates a SortedDictionary<TKey,TValue> with a case-insensitive comparer and populates it with data in random order, then passes the SortedDictionary<TKey,TValue> to the Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) constructor, along with a case-insensitive equality comparer, creating a Dictionary<TKey,TValue> that is sorted. Isso será útil se você precisar criar um dicionário classificado que, em algum momento, se torna estático; copiar os dados de um SortedDictionary<TKey,TValue> para um Dictionary<TKey,TValue> melhora a velocidade de recuperação.This is useful if you need to build a sorted dictionary that at some point becomes static; copying the data from a SortedDictionary<TKey,TValue> to a Dictionary<TKey,TValue> improves retrieval speed.

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 maiúsculas e minúsculas.When you create a new dictionary with a case-insensitive comparer and populate it with entries from a dictionary that uses a case-sensitive comparer, as in this example, an exception occurs if the input dictionary has keys that differ only by case.

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úsculasUse this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador especificado; da mesma forma, dictionary cada chave na origem também deve ser exclusiva de acordo com o comparador especificado.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer; likewise, every key in the source dictionary must also be unique according to the specified comparer.

Observação

Por exemplo, as chaves duplicadas podem comparer ocorrer se for um dos comparadores de cadeia de caracteres que não StringComparer diferenciam dictionary maiúsculas de minúsculas fornecido pela classe e não usar uma chave de comparador que não diferencia maiúsculas de minúsculas.For example, duplicate keys can occur if comparer is one of the case-insensitive string comparers provided by the StringComparer class and dictionary does not use a case-insensitive comparer key.

A capacidade inicial da nova Dictionary<TKey,TValue> é grande o suficiente para conter todos os elementos no. dictionaryThe initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Se comparer EqualityComparer<T>.Defaultfor null, esse construtor usará o comparador de igualdade genérico padrão,.If comparer is null, this constructor uses the default generic equality comparer, 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.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Esse construtor é uma operação on(), em n que é o número de elementos dictionaryno.This constructor is an O(n) operation, where n is the number of elements in dictionary.

Veja também

Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)

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>>
comparer
IEqualityComparer<TKey>

Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) 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.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IEqualityComparer<T>.

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 Int32 Int32 Int32

O número inicial de elementos que o Dictionary<TKey,TValue> pode conter.The initial number of elements that the Dictionary<TKey,TValue> can contain.

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.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Exceções

Exemplos

O exemplo de código a seguir Dictionary<TKey,TValue> cria um com uma capacidade inicial de 5 e um comparador de igualdade que não diferencia maiúsculas de minúsculas para a cultura atual.The following code example creates a Dictionary<TKey,TValue> with an initial capacity of 5 and a case-insensitive equality comparer for the current culture. O exemplo adiciona quatro elementos, alguns com chaves minúsculas e outros com chaves de letras maiúsculas.The example adds four elements, some with lower-case keys and some with upper-case keys. Em seguida, o exemplo tenta adicionar um elemento com uma chave que difere de uma chave existente somente por caso, captura a exceção resultante e exibe uma mensagem de erro.The example then attempts to add an element with a key that differs from an existing key only by case, catches the resulting exception, and displays an error message. Por fim, o exemplo exibe os elementos no dicionário.Finally, the example displays the elements in the dictionary.

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úsculasUse this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Cada chave em um Dictionary<TKey,TValue> deve ser exclusiva de acordo com o comparador especificado.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

A capacidade de um Dictionary<TKey,TValue> é o número de elementos que podem ser adicionados Dictionary<TKey,TValue> ao redimensionamento anterior é necessário.The capacity of a Dictionary<TKey,TValue> is the number of elements that can be added to the Dictionary<TKey,TValue> before resizing is necessary. À medida que os elementos são Dictionary<TKey,TValue>adicionados a um, a capacidade é aumentada automaticamente conforme necessário, realocando a matriz interna.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Se o tamanho da coleção puder ser estimado, a especificação da capacidade inicial elimina a necessidade de executar uma série de operações de redimensionamento ao Dictionary<TKey,TValue>adicionar elementos ao.If the size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

Dictionary<TKey,TValue> requer uma implementação de igualdade para determinar se as chaves são iguais.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Se comparer EqualityComparer<T>.Defaultfor null, esse construtor usará o comparador de igualdade genérico padrão,.If comparer is null, this constructor uses the default generic equality comparer, 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.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Este construtor é uma operação O(1).This constructor is an O(1) operation.

Veja também

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

Inicializa uma nova instância da classe Dictionary<TKey,TValue> com dados serializados.Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data.

protected:
 Dictionary(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
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>
Protected Sub New (info As SerializationInfo, context As StreamingContext)

Parâmetros

info
SerializationInfo SerializationInfo SerializationInfo SerializationInfo

Um objeto SerializationInfo que contém as informações necessárias para serializar o Dictionary<TKey,TValue>.A SerializationInfo object containing the information required to serialize the Dictionary<TKey,TValue>.

context
StreamingContext StreamingContext StreamingContext StreamingContext

Uma estrutura StreamingContext que contém a origem e o destino do fluxo serializado associado ao Dictionary<TKey,TValue>.A StreamingContext structure containing the source and destination of the serialized stream associated with the Dictionary<TKey,TValue>.

Comentários

Esse construtor é chamado durante a desserialização para reconstituir um objeto transmitido por um fluxo.This constructor is called during deserialization to reconstitute an object transmitted over a stream. Para obter mais informações, consulte serialização XML e SOAP.For more information, see XML and SOAP Serialization.

Veja também

Aplica-se a