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

Определение

Перегрузки

Dictionary<TKey,TValue>() Dictionary<TKey,TValue>() 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>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) 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<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>)

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

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

Примеры

Примечание

Некоторые примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на тестовой площадке Try.NET.Some of the C# examples in this article run in the Try.NET inline code runner and playground. Когда на экране появится кнопка Выполнить, нажмите ее, чтобы выполнить пример в интерактивном окне.When present, select the Run button to run an example in an interactive window. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить.Once you execute the code, you can modify it and run the modified code by selecting Run again. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

В следующем примере кода создается пустая 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

Комментарии

Каждый ключ в 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.

Примечание

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

Дополнительно

Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) 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))

Параметры

dictionary
IDictionary<TKey,TValue> IDictionary<TKey,TValue> IDictionary<TKey,TValue> IDictionary<TKey,TValue>

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

Исключения

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

Примеры

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

Комментарии

Каждый ключ в 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.

Дополнительно

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

Параметры

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

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

Параметры

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.

Примеры

В следующем примере кода создается объект 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

Комментарии

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

Примечание

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

Дополнительно

Dictionary<TKey,TValue>(Int32) Dictionary<TKey,TValue>(Int32) Dictionary<TKey,TValue>(Int32) 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)

Параметры

capacity
Int32 Int32 Int32 Int32

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

Исключения

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

Примеры

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

Комментарии

Каждый ключ в 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.

Дополнительно

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

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

Параметры

dictionary
IDictionary<TKey,TValue> IDictionary<TKey,TValue> IDictionary<TKey,TValue> 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.

Исключения

Свойство dictionary имеет значение null.dictionary is null.

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

Примеры

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

Примечание

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

Комментарии

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

Примечание

Например, дублирование ключей может произойти, 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.

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

Дополнительно

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

Параметры

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

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

Параметры

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

Исключения

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

Примеры

В следующем примере кода создается объект 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

Комментарии

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

Дополнительно

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) 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)

Параметры

info
SerializationInfo SerializationInfo SerializationInfo SerializationInfo

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

context
StreamingContext StreamingContext StreamingContext StreamingContext

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

Комментарии

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

Дополнительно

Применяется к