Sdílet prostřednictvím


Dictionary<TKey,TValue> Konstruktory

Definice

Inicializuje novou instanci Dictionary<TKey,TValue> třídy.

Přetížení

Dictionary<TKey,TValue>()

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má výchozí počáteční kapacitu a používá výchozí porovnávací nástroj rovnosti pro typ klíče.

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

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadané IDictionary<TKey,TValue> a použije výchozí porovnávací nástroj rovnosti pro typ klíče.

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

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadaného IEnumerable<T>objektu .

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

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má výchozí počáteční kapacitu a použije zadanou IEqualityComparer<T>.

Dictionary<TKey,TValue>(Int32)

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má zadanou počáteční kapacitu a použije výchozí porovnávací nástroj rovnosti pro typ klíče.

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

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadaného IDictionary<TKey,TValue> objektu a použije zadanou IEqualityComparer<T>.

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

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadaného IEnumerable<T> objektu a použije zadanou IEqualityComparer<T>.

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

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má zadanou počáteční kapacitu a použije zadanou IEqualityComparer<T>.

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
Zastaralé.

Inicializuje novou instanci třídy Dictionary<TKey,TValue> se serializovanými daty.

Dictionary<TKey,TValue>()

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má výchozí počáteční kapacitu a používá výchozí porovnávací nástroj rovnosti pro typ klíče.

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

Příklady

Následující příklad kódu vytvoří prázdný Dictionary<TKey,TValue> řetězec s řetězcovými klíči a použije metodu Add k přidání některých prvků. Příklad ukazuje, že Add metoda vyvolá chybu ArgumentException při pokusu o přidání duplicitního klíče.

Tento příklad kódu je součástí většího příkladu Dictionary<TKey,TValue> pro třídu.

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

Poznámky

Každý klíč v Dictionary<TKey,TValue> souboru musí být jedinečný podle výchozího porovnávače rovnosti.

Dictionary<TKey,TValue> vyžaduje implementaci rovnosti, aby bylo možné určit, zda jsou si klíče rovny. Tento konstruktor používá výchozí obecný porovnávací nástroj rovnosti, EqualityComparer<T>.Default. Pokud typ TKey implementuje System.IEquatable<T> obecné rozhraní, výchozí porovnávací nástroj rovnosti použije tuto implementaci. Případně můžete zadat implementaci IEqualityComparer<T> obecného rozhraní pomocí konstruktoru, který přijímá comparer parametr.

Poznámka

Pokud můžete odhadnout velikost kolekce, pomocí konstruktoru, který určuje počáteční kapacitu, eliminuje nutnost provádět několik operací změny velikosti při přidávání prvků do objektu Dictionary<TKey,TValue>.

Tento konstruktor je operace O(1).

Viz také

Platí pro

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

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadané IDictionary<TKey,TValue> a použije výchozí porovnávací nástroj rovnosti pro typ klíče.

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

Parametry

dictionary
IDictionary<TKey,TValue>

Čí IDictionary<TKey,TValue> elementy jsou zkopírovány do nového Dictionary<TKey,TValue>.

Výjimky

dictionary je null.

dictionary obsahuje jeden nebo více duplicitních klíčů.

Příklady

Následující příklad kódu ukazuje, jak použít Dictionary<TKey,TValue>(IEqualityComparer<TKey>) konstruktor k inicializaci Dictionary<TKey,TValue> s seřazeným obsahem z jiného slovníku. Příklad kódu vytvoří SortedDictionary<TKey,TValue> a naplní ho daty v náhodném pořadí, pak předá SortedDictionary<TKey,TValue> konstruktoru Dictionary<TKey,TValue>(IEqualityComparer<TKey>) a vytvoří seřazený Dictionary<TKey,TValue> objekt. To je užitečné, pokud potřebujete vytvořit seřazený slovník, který se v určitém okamžiku stane statickým; Kopírování dat z a SortedDictionary<TKey,TValue> do Dictionary<TKey,TValue> a zlepšuje rychlost načítání.

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

Poznámky

Každý klíč v Dictionary<TKey,TValue> souboru musí být jedinečný podle výchozího porovnávače rovnosti; stejně tak každý klíč ve zdroji dictionary musí být jedinečný podle výchozího porovnávače rovnosti.

Počáteční kapacita nového Dictionary<TKey,TValue> objektu je dostatečně velká, aby obsahovala všechny prvky v dictionarysouboru .

Dictionary<TKey,TValue> vyžaduje implementaci rovnosti, aby bylo možné určit, zda jsou si klíče rovny. Tento konstruktor používá výchozí obecný porovnávací nástroj rovnosti, EqualityComparer<T>.Default. Pokud typ TKey implementuje System.IEquatable<T> obecné rozhraní, výchozí porovnávací nástroj rovnosti použije tuto implementaci. Případně můžete zadat implementaci IEqualityComparer<T> obecného rozhraní pomocí konstruktoru, který přijímá comparer parametr.

Tento konstruktor je operace O(n), kde n je počet prvků v dictionary.

Viz také

Platí pro

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

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadaného IEnumerable<T>objektu .

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

Parametry

collection
IEnumerable<KeyValuePair<TKey,TValue>>

Čí IEnumerable<T> elementy jsou zkopírovány do nového Dictionary<TKey,TValue>.

Výjimky

collection je null.

collection obsahuje jeden nebo více duplicitních klíčů.

Platí pro

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

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má výchozí počáteční kapacitu a použije zadanou 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))

Parametry

comparer
IEqualityComparer<TKey>

Implementace IEqualityComparer<T> , která se má použít při porovnávání klíčů, nebo null použití výchozí EqualityComparer<T> hodnoty pro typ klíče.

Příklady

Následující příklad kódu vytvoří pro aktuální jazykovou Dictionary<TKey,TValue> verzi s porovnávačem rovnosti bez rozlišování velkých a malých písmen. Příklad přidá čtyři prvky, některé s klávesami s velkými písmeny a jiné s velkými písmeny. Příklad se pak pokusí přidat prvek s klíčem, který se liší od existujícího klíče pouze případem, zachytí výslednou výjimku a zobrazí chybovou zprávu. Nakonec příklad zobrazí prvky ve slovníku.

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

Poznámky

Tento konstruktor použijte s porovnávači řetězců bez rozlišování velkých a malých písmen poskytovaných StringComparer třídou k vytvoření slovníků s řetězcovými klíči bez rozlišování velkých a malých písmen.

Každý klíč v Dictionary<TKey,TValue> souboru musí být jedinečný podle zadaného porovnávače.

Dictionary<TKey,TValue> vyžaduje implementaci rovnosti, aby bylo možné určit, zda jsou si klíče rovny. Pokud comparer je null, použije tento konstruktor výchozí obecný porovnávací nástroj EqualityComparer<T>.Defaultrovnosti , . Pokud typ TKey implementuje System.IEquatable<T> obecné rozhraní, výchozí porovnávací nástroj rovnosti použije tuto implementaci.

Poznámka

Pokud můžete odhadnout velikost kolekce, pomocí konstruktoru, který určuje počáteční kapacitu, eliminuje nutnost provádět několik operací změny velikosti při přidávání prvků do objektu Dictionary<TKey,TValue>.

Tento konstruktor je operace O(1).

Viz také

Platí pro

Dictionary<TKey,TValue>(Int32)

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má zadanou počáteční kapacitu a použije výchozí porovnávací nástroj rovnosti pro typ klíče.

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)

Parametry

capacity
Int32

Počáteční počet prvků, které může obsahovat Dictionary<TKey,TValue> .

Výjimky

capacity je menší než 0.

Příklady

Následující příklad kódu vytvoří slovník s počáteční kapacitou 4 a naplní ho 4 položkami.

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

Poznámky

Každý klíč v Dictionary<TKey,TValue> souboru musí být jedinečný podle výchozího porovnávače rovnosti.

Kapacita je Dictionary<TKey,TValue> počet prvků, které je možné přidat k sadě Dictionary<TKey,TValue> před potřebou změny velikosti. Při přidání prvků do objektu Dictionary<TKey,TValue>se kapacita automaticky zvýší podle potřeby opětovným přidělením interního pole.

Pokud je možné odhadnout velikost kolekce, zadáním počáteční kapacity se eliminuje nutnost provádět několik operací změny velikosti při přidávání prvků do objektu Dictionary<TKey,TValue>.

Dictionary<TKey,TValue> vyžaduje implementaci rovnosti, aby bylo možné určit, zda jsou si klíče rovny. Tento konstruktor používá výchozí obecný porovnávací nástroj rovnosti, EqualityComparer<T>.Default. Pokud typ TKey implementuje System.IEquatable<T> obecné rozhraní, výchozí porovnávací nástroj rovnosti použije tuto implementaci. Případně můžete zadat implementaci IEqualityComparer<T> obecného rozhraní pomocí konstruktoru, který přijímá comparer parametr.

Tento konstruktor je operace O(1).

Viz také

Platí pro

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

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadaného IDictionary<TKey,TValue> objektu a použije zadanou 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))

Parametry

dictionary
IDictionary<TKey,TValue>

Čí IDictionary<TKey,TValue> elementy jsou zkopírovány do nového Dictionary<TKey,TValue>.

comparer
IEqualityComparer<TKey>

Implementace IEqualityComparer<T> , která se má použít při porovnávání klíčů, nebo null použití výchozí EqualityComparer<T> hodnoty pro typ klíče.

Výjimky

dictionary je null.

dictionary obsahuje jeden nebo více duplicitních klíčů.

Příklady

Následující příklad kódu ukazuje, jak pomocí konstruktoru Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) inicializovat Dictionary<TKey,TValue> obsah řazení z jiného slovníku bez rozlišování velkých a malých písmen. Příklad kódu vytvoří porovnávače SortedDictionary<TKey,TValue> bez rozlišování velkých a malých písmen a naplní ho daty v náhodném pořadí, pak předá SortedDictionary<TKey,TValue>Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) konstruktoru společně s porovnávačem rovnosti bez rozlišování velkých a malých písmen a vytvoří seřazený Dictionary<TKey,TValue> objekt. To je užitečné, pokud potřebujete vytvořit seřazený slovník, který se v určitém okamžiku stane statickým; Kopírování dat z a SortedDictionary<TKey,TValue> do Dictionary<TKey,TValue> a zlepšuje rychlost načítání.

Poznámka

Když vytvoříte nový slovník s porovnávačem bez rozlišování velkých a malých písmen a naplníte ho položkami ze slovníku, který používá porovnávací nástroj rozlišující malá a malá písmena, jako v tomto příkladu, dojde k výjimce, pokud vstupní slovník obsahuje klíče, které se liší pouze podle velkých a malých písmen.

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

Poznámky

Tento konstruktor použijte s porovnávači řetězců bez rozlišování velkých a malých písmen poskytovaných StringComparer třídou k vytvoření slovníků s řetězcovými klíči bez rozlišování velkých a malých písmen.

Každý klíč v Dictionary<TKey,TValue> souboru musí být jedinečný podle zadaného porovnávače; stejně tak každý klíč ve zdroji dictionary musí být jedinečný podle zadaného porovnávače.

Poznámka

K duplicitním klíčům může dojít například v případě, že comparer je jedním z porovnávačů řetězců bez rozlišování velkých a malých písmen poskytovaných StringComparer třídou a dictionary nepoužívá klíč porovnávače nerozlišující malá a velká písmena.

Počáteční kapacita nového Dictionary<TKey,TValue> objektu je dostatečně velká, aby obsahovala všechny prvky v dictionarysouboru .

Dictionary<TKey,TValue> vyžaduje implementaci rovnosti, aby bylo možné určit, zda jsou si klíče rovny. Pokud comparer je null, použije tento konstruktor výchozí obecný porovnávací nástroj EqualityComparer<T>.Defaultrovnosti , . Pokud typ TKey implementuje System.IEquatable<T> obecné rozhraní, výchozí porovnávací nástroj rovnosti použije tuto implementaci.

Tento konstruktor je operace O(n), kde n je počet prvků v dictionary.

Viz také

Platí pro

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

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje elementy zkopírované ze zadaného IEnumerable<T> objektu a použije zadanou 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))

Parametry

collection
IEnumerable<KeyValuePair<TKey,TValue>>

Čí IEnumerable<T> elementy jsou zkopírovány do nového Dictionary<TKey,TValue>.

comparer
IEqualityComparer<TKey>

Implementace IEqualityComparer<T> , která se má použít při porovnávání klíčů, nebo null použití výchozí EqualityComparer<T> hodnoty pro typ klíče.

Výjimky

collection je null.

collection obsahuje jeden nebo více duplicitních klíčů.

Platí pro

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

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která je prázdná, má zadanou počáteční kapacitu a použije zadanou 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))

Parametry

capacity
Int32

Počáteční počet prvků, které může obsahovat Dictionary<TKey,TValue> .

comparer
IEqualityComparer<TKey>

Implementace IEqualityComparer<T> , která se má použít při porovnávání klíčů, nebo null použití výchozí EqualityComparer<T> hodnoty pro typ klíče.

Výjimky

capacity je menší než 0.

Příklady

Následující příklad kódu vytvoří Dictionary<TKey,TValue> objekt s počáteční kapacitou 5 a porovnávače rovnosti bez rozlišování velkých a malých písmen pro aktuální jazykovou verzi. Příklad přidá čtyři prvky, některé s klávesami s velkými písmeny a jiné s velkými písmeny. Příklad se pak pokusí přidat prvek s klíčem, který se liší od existujícího klíče pouze případem, zachytí výslednou výjimku a zobrazí chybovou zprávu. Nakonec příklad zobrazí prvky ve slovníku.

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

Poznámky

Tento konstruktor použijte s porovnávači řetězců bez rozlišování velkých a malých písmen poskytovaných StringComparer třídou k vytvoření slovníků s řetězcovými klíči bez rozlišování velkých a malých písmen.

Každý klíč v Dictionary<TKey,TValue> souboru musí být jedinečný podle zadaného porovnávače.

Kapacita je Dictionary<TKey,TValue> počet prvků, které je možné přidat k sadě Dictionary<TKey,TValue> před potřebou změny velikosti. Při přidání prvků do objektu Dictionary<TKey,TValue>se kapacita automaticky zvýší podle potřeby opětovným přidělením interního pole.

Pokud je možné odhadnout velikost kolekce, zadáním počáteční kapacity se eliminuje nutnost provádět několik operací změny velikosti při přidávání prvků do objektu Dictionary<TKey,TValue>.

Dictionary<TKey,TValue> vyžaduje implementaci rovnosti, aby bylo možné určit, zda jsou si klíče rovny. Pokud comparer je null, použije tento konstruktor výchozí obecný porovnávací nástroj EqualityComparer<T>.Defaultrovnosti , . Pokud typ TKey implementuje System.IEquatable<T> obecné rozhraní, výchozí porovnávací nástroj rovnosti použije tuto implementaci.

Tento konstruktor je operace O(1).

Viz také

Platí pro

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs
Zdroj:
Dictionary.cs

Upozornění

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

Inicializuje novou instanci třídy Dictionary<TKey,TValue> se serializovanými daty.

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)

Parametry

info
SerializationInfo

Objekt SerializationInfo obsahující informace potřebné k serializaci objektu Dictionary<TKey,TValue>.

context
StreamingContext

Struktura StreamingContext obsahující zdroj a cíl serializovaného streamu přidruženého k Dictionary<TKey,TValue>.

Atributy

Poznámky

Tento konstruktor je volána během deserializace rekonstituovat objekt přenášený přes datový proud. Další informace najdete v tématu Serializace XML a SOAP.

Viz také

Platí pro