Dictionary<TKey,TValue> Constructors

Definition

Инициализирует новый экземпляр класса Dictionary<TKey,TValue>.Initializes a new instance of the Dictionary<TKey,TValue> class.

Overloads

Dictionary<TKey,TValue>()

Инициализирует новый пустой экземпляр класса Dictionary<TKey,TValue>, имеющий начальную емкость по умолчанию и использующий функцию сравнения по умолчанию, проверяющую равенство для данного типа ключа.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>, и использует функцию сравнения по умолчанию, проверяющую равенство для данного типа ключа.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<T>.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IEnumerable<T>.

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

Инициализирует новый пустой экземпляр класса Dictionary<TKey,TValue> с начальной емкостью по умолчанию, использующий указанную функцию сравнения IEqualityComparer<T>.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>, имеющий заданную начальную емкость и использующий функцию сравнения по умолчанию, проверяющую равенство для данного типа ключа.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<T>.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<T>, и использует указанный компаратор IEqualityComparer<T>.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IEnumerable<T> and uses the specified IEqualityComparer<T>.

Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>)

Инициализирует новый пустой экземпляр класса Dictionary<TKey,TValue> с заданной начальной емкостью, использующий указанную функцию сравнения IEqualityComparer<T>.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> с сериализованными данными.Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data.

Dictionary<TKey,TValue>()

Инициализирует новый пустой экземпляр класса Dictionary<TKey,TValue>, имеющий начальную емкость по умолчанию и использующий функцию сравнения по умолчанию, проверяющую равенство для данного типа ключа.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 ()

Examples

В следующем примере кода создается пустая Dictionary<TKey,TValue> строк со строковыми ключами и используется метод Add для добавления некоторых элементов.The following code example creates an empty Dictionary<TKey,TValue> of strings with string keys and uses the Add method to add some elements. В примере показано, что при попытке добавления повторяющегося ключа метод Add создает исключение ArgumentException.The example demonstrates that the Add method throws an ArgumentException when attempting to add a duplicate key.

Этот пример кода является частью большого примера, приведенного для класса Dictionary<TKey,TValue>.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

Remarks

Каждый ключ в Dictionary<TKey,TValue> должен быть уникальным в соответствии с компаратором проверки на равенство по умолчанию.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

для Dictionary<TKey,TValue> требуется реализация равенства, чтобы определить, равны ли ключи.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Этот конструктор использует универсальный компаратор по умолчанию для проверки на равенство EqualityComparer<T>.Default.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Если тип TKey реализует System.IEquatable<T> универсальный интерфейс, то функция сравнения на равенство по умолчанию использует эту реализацию.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Кроме того, можно указать реализацию IEqualityComparer<T> универсального интерфейса с помощью конструктора, принимающего параметр comparer.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Note

Если вы можете оценить размер коллекции, используя конструктор, указывающий начальную емкость, избавляет от необходимости выполнять ряд операций изменения размера при добавлении элементов в Dictionary<TKey,TValue>.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>.

Этот конструктор является операцией O (1).This constructor is an O(1) operation.

See also

Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)

Инициализирует новый экземпляр класса Dictionary<TKey,TValue>, который содержит элементы, скопированные из заданной коллекции IDictionary<TKey,TValue>, и использует функцию сравнения по умолчанию, проверяющую равенство для данного типа ключа.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))

Parameters

dictionary
IDictionary<TKey,TValue>

Объект IDictionary<TKey,TValue>, элементы которого копируются в новый объект Dictionary<TKey,TValue>.The IDictionary<TKey,TValue> whose elements are copied to the new Dictionary<TKey,TValue>.

Exceptions

dictionary имеет значение null.dictionary is null.

dictionary содержит один или несколько ключей-дубликатов.dictionary contains one or more duplicate keys.

Examples

В следующем примере кода показано, как использовать конструктор Dictionary<TKey,TValue>(IEqualityComparer<TKey>) для инициализации Dictionary<TKey,TValue> с отсортированным содержимым из другого словаря.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. Пример кода создает SortedDictionary<TKey,TValue> и заполняет его данными в случайном порядке, затем передает SortedDictionary<TKey,TValue> конструктору Dictionary<TKey,TValue>(IEqualityComparer<TKey>), создавая упорядоченную Dictionary<TKey,TValue>.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. Это полезно, если необходимо создать отсортированный словарь, который в какой-то момент становится статическим; копирование данных из SortedDictionary<TKey,TValue> в Dictionary<TKey,TValue> улучшает скорость получения.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

Remarks

Каждый ключ в Dictionary<TKey,TValue> должен быть уникальным в соответствии с компаратором проверки на равенство по умолчанию. Аналогичным образом каждый ключ в исходном dictionary также должен быть уникальным в соответствии с компаратором равенства по умолчанию.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.

Начальная емкость нового Dictionary<TKey,TValue> достаточно велика, чтобы вместить все элементы в dictionary.The initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

для Dictionary<TKey,TValue> требуется реализация равенства, чтобы определить, равны ли ключи.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Этот конструктор использует универсальный компаратор по умолчанию для проверки на равенство EqualityComparer<T>.Default.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Если тип TKey реализует System.IEquatable<T> универсальный интерфейс, то функция сравнения на равенство по умолчанию использует эту реализацию.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Кроме того, можно указать реализацию IEqualityComparer<T> универсального интерфейса с помощью конструктора, принимающего параметр comparer.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Этот конструктор является операцией O (n), где n — число элементов в dictionary.This constructor is an O(n) operation, where n is the number of elements in dictionary.

See also

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

Инициализирует новый экземпляр класса Dictionary<TKey,TValue>, который содержит элементы, скопированные из указанного объекта IEnumerable<T>.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IEnumerable<T>.

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

Parameters

collection
IEnumerable<KeyValuePair<TKey,TValue>>

Объект IEnumerable<T>, элементы которого копируются в новый объект Dictionary<TKey,TValue>.The IEnumerable<T> whose elements are copied to the new Dictionary<TKey,TValue>.

Exceptions

collection имеет значение null.collection is null.

collection содержит один или несколько повторяющихся ключей.collection contains one or more duplicated keys.

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

Инициализирует новый пустой экземпляр класса Dictionary<TKey,TValue> с начальной емкостью по умолчанию, использующий указанную функцию сравнения IEqualityComparer<T>.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))

Parameters

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Examples

В следующем примере кода создается Dictionary<TKey,TValue> с компаратором проверки на равенство без учета регистра для текущего языка и региональных параметров.The following code example creates a Dictionary<TKey,TValue> with a case-insensitive equality comparer for the current culture. В примере добавляются четыре элемента, некоторые с ключами в нижнем регистре, а некоторые — с ключами верхнего регистра.The example adds four elements, some with lower-case keys and some with upper-case keys. Затем в примере выполняется попытка добавить элемент с ключом, который отличается от существующего ключа только регистром, перехватывает результирующее исключение и выводит сообщение об ошибке.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. Наконец, в примере выводятся элементы в словаре.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

Remarks

Используйте этот конструктор с нечувствительными к регистру компараторами строк, предоставляемыми классом StringComparer для создания словарей с строковыми ключами без учета регистра.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Каждый ключ в Dictionary<TKey,TValue> должен быть уникальным в соответствии с указанным компаратором.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

для Dictionary<TKey,TValue> требуется реализация равенства, чтобы определить, равны ли ключи.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Если comparer null, этот конструктор использует универсальный компаратор для проверки на равенство по умолчанию EqualityComparer<T>.Default.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Если тип TKey реализует System.IEquatable<T> универсальный интерфейс, то функция сравнения на равенство по умолчанию использует эту реализацию.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Note

Если вы можете оценить размер коллекции, используя конструктор, указывающий начальную емкость, избавляет от необходимости выполнять ряд операций изменения размера при добавлении элементов в Dictionary<TKey,TValue>.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>.

Этот конструктор является операцией O (1).This constructor is an O(1) operation.

See also

Dictionary<TKey,TValue>(Int32)

Инициализирует новый пустой экземпляр класса Dictionary<TKey,TValue>, имеющий заданную начальную емкость и использующий функцию сравнения по умолчанию, проверяющую равенство для данного типа ключа.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)

Parameters

capacity
Int32

Начальное количество элементов, которое может содержать коллекция Dictionary<TKey,TValue>.The initial number of elements that the Dictionary<TKey,TValue> can contain.

Exceptions

Значение параметра capacity меньше 0.capacity is less than 0.

Examples

В следующем примере кода создается словарь с начальной емкостью 4 и заполняется 4 записями.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

Remarks

Каждый ключ в Dictionary<TKey,TValue> должен быть уникальным в соответствии с компаратором проверки на равенство по умолчанию.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

Емкость Dictionary<TKey,TValue> — это количество элементов, которые можно добавить в Dictionary<TKey,TValue>, прежде чем потребуется изменить размер.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. При добавлении элементов в Dictionary<TKey,TValue>емкость автоматически увеличивается по мере необходимости путем перераспределения внутреннего массива.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Если размер коллекции можно оценить, указание начальной емкости избавляет от необходимости выполнять несколько операций изменения размера при добавлении элементов в Dictionary<TKey,TValue>.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> требуется реализация равенства, чтобы определить, равны ли ключи.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Этот конструктор использует универсальный компаратор по умолчанию для проверки на равенство EqualityComparer<T>.Default.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Если тип TKey реализует System.IEquatable<T> универсальный интерфейс, то функция сравнения на равенство по умолчанию использует эту реализацию.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Кроме того, можно указать реализацию IEqualityComparer<T> универсального интерфейса с помощью конструктора, принимающего параметр comparer.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Этот конструктор является операцией O (1).This constructor is an O(1) operation.

See also

Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)

Инициализирует новый экземпляр класса Dictionary<TKey,TValue>, который содержит элементы, скопированные из заданной коллекции IDictionary<TKey,TValue>, и использует указанный интерфейс IEqualityComparer<T>.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))

Parameters

dictionary
IDictionary<TKey,TValue>

Объект IDictionary<TKey,TValue>, элементы которого копируются в новый объект Dictionary<TKey,TValue>.The IDictionary<TKey,TValue> whose elements are copied to the new Dictionary<TKey,TValue>.

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Exceptions

dictionary имеет значение null.dictionary is null.

dictionary содержит один или несколько ключей-дубликатов.dictionary contains one or more duplicate keys.

Examples

В следующем примере кода показано, как использовать конструктор Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) для инициализации Dictionary<TKey,TValue> с сортированным содержимым без учета регистра из другого словаря.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. В примере кода создается SortedDictionary<TKey,TValue> с компаратором, не учитывающим регистр, и заполняется данными в случайном порядке, затем передается SortedDictionary<TKey,TValue> конструктору Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>), а также компаратор сравнения на равенство без учета регистра, создающий отсортированный Dictionary<TKey,TValue>.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. Это полезно, если необходимо создать отсортированный словарь, который в какой-то момент становится статическим; копирование данных из SortedDictionary<TKey,TValue> в Dictionary<TKey,TValue> улучшает скорость получения.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.

Note

При создании нового словаря с компаратором без учета регистра и заполнении его записями из словаря, в котором используется компаратор с учетом регистра, как в этом примере, исключение возникает, если входной словарь содержит ключи, отличающиеся только регистром.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

Remarks

Используйте этот конструктор с нечувствительными к регистру компараторами строк, предоставляемыми классом StringComparer для создания словарей с строковыми ключами без учета регистра.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Каждый ключ в Dictionary<TKey,TValue> должен быть уникальным в соответствии с указанным компаратором. Аналогичным образом каждый ключ в исходном dictionary также должен быть уникальным в соответствии с указанным компаратором.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.

Note

Например, дублирование ключей может произойти, если comparer является одним из нечувствительных к регистру компараторов строк, предоставляемых классом StringComparer, а dictionary не использует ключ сравнения без учета регистра.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.

Начальная емкость нового Dictionary<TKey,TValue> достаточно велика, чтобы вместить все элементы в dictionary.The initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

для Dictionary<TKey,TValue> требуется реализация равенства, чтобы определить, равны ли ключи.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Если comparer null, этот конструктор использует универсальный компаратор для проверки на равенство по умолчанию EqualityComparer<T>.Default.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Если тип TKey реализует System.IEquatable<T> универсальный интерфейс, то функция сравнения на равенство по умолчанию использует эту реализацию.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Этот конструктор является операцией O (n), где n — число элементов в dictionary.This constructor is an O(n) operation, where n is the number of elements in dictionary.

See also

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

Инициализирует новый экземпляр Dictionary<TKey,TValue>, который содержит элементы, скопированные из заданного словаря IEnumerable<T>, и использует указанный компаратор IEqualityComparer<T>.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IEnumerable<T> and uses the specified IEqualityComparer<T>.

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

Parameters

collection
IEnumerable<KeyValuePair<TKey,TValue>>

Объект IEnumerable<T>, элементы которого копируются в новый объект Dictionary<TKey,TValue>.The IEnumerable<T> whose elements are copied to the new Dictionary<TKey,TValue>.

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Exceptions

collection имеет значение null.collection is null.

collection содержит один или несколько повторяющихся ключей.collection contains one or more duplicated keys.

Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>)

Инициализирует новый пустой экземпляр класса Dictionary<TKey,TValue> с заданной начальной емкостью, использующий указанную функцию сравнения IEqualityComparer<T>.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))

Parameters

capacity
Int32

Начальное количество элементов, которое может содержать коллекция Dictionary<TKey,TValue>.The initial number of elements that the Dictionary<TKey,TValue> can contain.

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Exceptions

Значение параметра capacity меньше 0.capacity is less than 0.

Examples

В следующем примере кода создается Dictionary<TKey,TValue> с начальной емкостью 5 и компаратором сравнения на равенство без учета регистра для текущего языка и региональных параметров.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. В примере добавляются четыре элемента, некоторые с ключами в нижнем регистре, а некоторые — с ключами верхнего регистра.The example adds four elements, some with lower-case keys and some with upper-case keys. Затем в примере выполняется попытка добавить элемент с ключом, который отличается от существующего ключа только регистром, перехватывает результирующее исключение и выводит сообщение об ошибке.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. Наконец, в примере выводятся элементы в словаре.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

Remarks

Используйте этот конструктор с нечувствительными к регистру компараторами строк, предоставляемыми классом StringComparer для создания словарей с строковыми ключами без учета регистра.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Каждый ключ в Dictionary<TKey,TValue> должен быть уникальным в соответствии с указанным компаратором.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

Емкость Dictionary<TKey,TValue> — это количество элементов, которые можно добавить в Dictionary<TKey,TValue>, прежде чем потребуется изменить размер.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. При добавлении элементов в Dictionary<TKey,TValue>емкость автоматически увеличивается по мере необходимости путем перераспределения внутреннего массива.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Если размер коллекции можно оценить, указание начальной емкости избавляет от необходимости выполнять несколько операций изменения размера при добавлении элементов в Dictionary<TKey,TValue>.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> требуется реализация равенства, чтобы определить, равны ли ключи.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Если comparer null, этот конструктор использует универсальный компаратор для проверки на равенство по умолчанию EqualityComparer<T>.Default.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Если тип TKey реализует System.IEquatable<T> универсальный интерфейс, то функция сравнения на равенство по умолчанию использует эту реализацию.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Этот конструктор является операцией O (1).This constructor is an O(1) operation.

See also

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

Инициализирует новый экземпляр класса Dictionary<TKey,TValue> с сериализованными данными.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)

Parameters

info
SerializationInfo

Объект SerializationInfo, который содержит сведения, требуемые для сериализации коллекции Dictionary<TKey,TValue>.A SerializationInfo object containing the information required to serialize the Dictionary<TKey,TValue>.

context
StreamingContext

Структура StreamingContext, содержащая исходный и конечный объекты для сериализованного потока, связанного с коллекцией Dictionary<TKey,TValue>.A StreamingContext structure containing the source and destination of the serialized stream associated with the Dictionary<TKey,TValue>.

Remarks

Этот конструктор вызывается во время десериализации для воссоздания объекта, переданного в потоке.This constructor is called during deserialization to reconstitute an object transmitted over a stream. Дополнительные сведения см. в разделе сериализация XML и SOAP.For more information, see XML and SOAP Serialization.

See also

Applies to