Dictionary<TKey,TValue> Конструкторы

Определение

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

Перегрузки

Dictionary<TKey,TValue>()

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

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

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

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

Инициализирует новый экземпляр класса Dictionary<TKey,TValue>, который содержит элементы, скопированные из указанного объекта IEnumerable<T>.

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

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

Dictionary<TKey,TValue>(Int32)

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

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

Инициализирует новый экземпляр Dictionary<TKey,TValue>, который содержит элементы, скопированные из заданного словаря IDictionary<TKey,TValue>, и использует указанный компаратор IEqualityComparer<T>.

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

Инициализирует новый экземпляр Dictionary<TKey,TValue>, который содержит элементы, скопированные из заданного словаря IEnumerable<T>, и использует указанный компаратор IEqualityComparer<T>.

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

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

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
Устаревшие..

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

Dictionary<TKey,TValue>()

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

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

Примеры

В следующем примере кода создается пустая Dictionary<TKey,TValue> строка со строковыми ключами и используется Add метод для добавления некоторых элементов. В примере показано, что Add метод создает исключение ArgumentException при попытке добавить повторяющийся ключ.

Этот пример входит в состав более крупного примера использования класса Dictionary<TKey,TValue>.

// 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> соответствии с компаратором на равенство по умолчанию.

Dictionary<TKey,TValue> требует реализации равенства, чтобы определить, равны ли ключи. Этот конструктор использует универсальный компаратор на равенство по умолчанию , EqualityComparer<T>.Default. Если тип TKey реализует универсальный System.IEquatable<T> интерфейс, компаратор на равенство по умолчанию использует такую реализацию. Кроме того, можно указать реализацию универсального IEqualityComparer<T> интерфейса с помощью конструктора, который принимает comparer параметр .

Примечание

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

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

См. также раздел

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

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

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

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>, элементы которого копируются в новый объект Dictionary<TKey,TValue>.

Исключения

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

Параметр dictionary содержит один или более повторяющихся ключей.

Примеры

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

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 должен быть уникальным в соответствии с компаратором на равенство по умолчанию.

Начальная емкость нового Dictionary<TKey,TValue> объекта достаточно велика, чтобы содержать все элементы в dictionary.

Dictionary<TKey,TValue> требует реализации равенства, чтобы определить, равны ли ключи. Этот конструктор использует универсальный компаратор на равенство по умолчанию , EqualityComparer<T>.Default. Если тип TKey реализует универсальный System.IEquatable<T> интерфейс, компаратор на равенство по умолчанию использует такую реализацию. Кроме того, можно указать реализацию универсального IEqualityComparer<T> интерфейса с помощью конструктора, который принимает comparer параметр .

Этот конструктор является операцией O(n), где n — количество элементов в dictionary.

См. также раздел

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

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

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

Параметры

collection
IEnumerable<KeyValuePair<TKey,TValue>>

Объект IEnumerable<T>, элементы которого копируются в новый объект Dictionary<TKey,TValue>.

Исключения

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

collection содержит один или несколько повторяющихся ключей.

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

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

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

public:
 Dictionary(System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (System.Collections.Generic.IEqualityComparer<TKey> comparer);
public Dictionary (System.Collections.Generic.IEqualityComparer<TKey>? comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (comparer As IEqualityComparer(Of TKey))

Параметры

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.

Примеры

В следующем примере кода создается Dictionary<TKey,TValue> с функцией сравнения равенства без учета регистра для текущего языка и региональных параметров. В примере добавляются четыре элемента: некоторые с клавишами нижнего регистра, а некоторые с клавишами верхнего регистра. Затем в примере предпринимается попытка добавить элемент с ключом, который отличается от существующего ключа только по регистру, перехватывает результирующее исключение и выводит сообщение об ошибке. Наконец, в примере отображаются элементы словаря.

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

Каждый ключ в должен быть уникальным в Dictionary<TKey,TValue> соответствии с указанным компаратором.

Dictionary<TKey,TValue> требует реализации равенства, чтобы определить, равны ли ключи. Если comparer имеет значение null, этот конструктор использует универсальный компаратор на равенство по умолчанию , EqualityComparer<T>.Default. Если тип TKey реализует универсальный System.IEquatable<T> интерфейс, компаратор на равенство по умолчанию использует такую реализацию.

Примечание

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

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

См. также раздел

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

Dictionary<TKey,TValue>(Int32)

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

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

Начальное количество элементов, которое может содержать коллекция Dictionary<TKey,TValue>.

Исключения

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

Примеры

В следующем примере кода создается словарь с начальной емкостью 4 и заполняется 4 записями.

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> соответствии с компаратором на равенство по умолчанию.

Емкость Dictionary<TKey,TValue> — это количество элементов, которые можно добавить в Dictionary<TKey,TValue> , прежде чем потребуется изменение размера. При добавлении элементов в Dictionary<TKey,TValue>емкость автоматически увеличивается по мере необходимости путем перераспределения внутреннего массива.

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

Dictionary<TKey,TValue> требует реализации равенства, чтобы определить, равны ли ключи. Этот конструктор использует универсальный компаратор на равенство по умолчанию , EqualityComparer<T>.Default. Если тип TKey реализует универсальный System.IEquatable<T> интерфейс, компаратор на равенство по умолчанию использует такую реализацию. Кроме того, можно указать реализацию универсального IEqualityComparer<T> интерфейса с помощью конструктора, который принимает comparer параметр .

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

См. также раздел

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

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

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.

Исключения

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

Параметр dictionary содержит один или более повторяющихся ключей.

Примеры

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

Примечание

При создании нового словаря с помощью компаратора без учета регистра и заполнении его записями из словаря, использующего функцию сравнения с учетом регистра, как в этом примере, возникает исключение, если входной словарь содержит ключи, которые отличаются только регистром.

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

Каждый ключ в должен быть уникальным в Dictionary<TKey,TValue> соответствии с указанным компаратором; аналогично, каждый ключ в источнике dictionary должен быть уникальным в соответствии с указанным компаратором.

Примечание

Например, повторяющиеся ключи могут возникать, если comparer является одним из строковых компараторов без учета регистра, предоставляемых классом StringComparer , и dictionary не использует ключ сравнения без учета регистра.

Начальная емкость нового Dictionary<TKey,TValue> объекта достаточно велика, чтобы содержать все элементы в dictionary.

Dictionary<TKey,TValue> требует реализации равенства, чтобы определить, равны ли ключи. Если comparer имеет значение null, этот конструктор использует универсальный компаратор на равенство по умолчанию , EqualityComparer<T>.Default. Если тип TKey реализует универсальный System.IEquatable<T> интерфейс, компаратор на равенство по умолчанию использует такую реализацию.

Этот конструктор является операцией O(n), где n — количество элементов в dictionary.

См. также раздел

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

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

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

Объект IEnumerable<T>, элементы которого копируются в новый объект Dictionary<TKey,TValue>.

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.

Исключения

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

collection содержит один или несколько повторяющихся ключей.

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

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

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

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

public:
 Dictionary(int capacity, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (int capacity, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public Dictionary (int capacity, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : int * System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (capacity As Integer, comparer As IEqualityComparer(Of TKey))

Параметры

capacity
Int32

Начальное количество элементов, которое может содержать коллекция Dictionary<TKey,TValue>.

comparer
IEqualityComparer<TKey>

Реализация IEqualityComparer<T>, которую следует использовать при сравнении ключей, или null, если для данного типа ключа должна использоваться реализация EqualityComparer<T> по умолчанию.

Исключения

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

Примеры

В следующем примере кода создается Dictionary<TKey,TValue> с начальной емкостью 5 и сравнением равенства без учета регистра для текущего языка и региональных параметров. В примере добавляются четыре элемента: некоторые с клавишами нижнего регистра, а некоторые с клавишами верхнего регистра. Затем в примере предпринимается попытка добавить элемент с ключом, который отличается от существующего ключа только по регистру, перехватывает результирующее исключение и выводит сообщение об ошибке. Наконец, в примере отображаются элементы словаря.

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

Каждый ключ в должен быть уникальным в Dictionary<TKey,TValue> соответствии с указанным компаратором.

Емкость Dictionary<TKey,TValue> — это количество элементов, которые можно добавить в Dictionary<TKey,TValue> , прежде чем потребуется изменение размера. При добавлении элементов в Dictionary<TKey,TValue>емкость автоматически увеличивается по мере необходимости путем перераспределения внутреннего массива.

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

Dictionary<TKey,TValue> требует реализации равенства, чтобы определить, равны ли ключи. Если comparer имеет значение null, этот конструктор использует универсальный компаратор на равенство по умолчанию , EqualityComparer<T>.Default. Если тип TKey реализует универсальный System.IEquatable<T> интерфейс, компаратор на равенство по умолчанию использует такую реализацию.

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

См. также раздел

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

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

Source:
Dictionary.cs
Source:
Dictionary.cs
Source:
Dictionary.cs

Внимание!

This API supports obsolete formatter-based serialization. It should not be called or extended by application code.

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

protected:
 Dictionary(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
protected Dictionary (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected Dictionary (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Generic.Dictionary<'Key, 'Value>
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Generic.Dictionary<'Key, 'Value>
Protected Sub New (info As SerializationInfo, context As StreamingContext)

Параметры

info
SerializationInfo

Объект SerializationInfo, который содержит сведения, требуемые для сериализации коллекции Dictionary<TKey,TValue>.

context
StreamingContext

Структура StreamingContext, содержащая исходный и конечный объекты для сериализованного потока, связанного с коллекцией Dictionary<TKey,TValue>.

Атрибуты

Комментарии

Этот конструктор вызывается во время десериализации для восстановления объекта, передаваемого по потоку. Дополнительные сведения см. в разделе Сериализация XML и SOAP.

См. также раздел

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