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

Definice

Přetížení

Dictionary<TKey,TValue>() Dictionary<TKey,TValue>() 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í metodu pro typ klíče.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>)

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje prvky zkopírované ze zadaného IDictionary<TKey,TValue> typu a používá pro typ klíče výchozí porovnávací metodu rovnosti.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>)

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

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

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

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

Inicializuje novou instanci třídy Dictionary<TKey,TValue> třídy se serializovanými daty.Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data.

Dictionary<TKey,TValue>() Dictionary<TKey,TValue>() 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í metodu pro typ klíče.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 ()

Příklady

Poznámka

Některé příklady jazyka C# v tomto článku spustit Try.NET runner a playground vloženého kódu.Some of the C# examples in this article run in the Try.NET inline code runner and playground. Pokud je přítomen, vyberte spustit tlačítko spustit příklad v interaktivním okně.When present, select the Run button to run an example in an interactive window. Jakmile se při spuštění kódu, můžete upravit a spustit upravený kód tak, že vyberete spustit znovu.Once you execute the code, you can modify it and run the modified code by selecting Run again. Upravené kód je buď spuštěn v interaktivním okně, nebo pokud kompilace se nezdaří, interaktivní okno zobrazuje všechny jazyka C# kompilátoru chybové zprávy.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Následující příklad kódu vytvoří prázdné Dictionary<TKey,TValue> řetězce s klíči řetězce a Add pomocí metody přidá některé prvky.The following code example creates an empty Dictionary<TKey,TValue> of strings with string keys and uses the Add method to add some elements. Příklad ukazuje, že Add metoda ArgumentException vyvolá výjimku při pokusu o přidání duplicitního klíče.The example demonstrates that the Add method throws an ArgumentException when attempting to add a duplicate key.

Tento příklad kódu je součástí většího příkladu, který Dictionary<TKey,TValue> je k dispozici pro třídu.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

Poznámky

Každý klíč v Dictionary<TKey,TValue> musí být jedinečný v závislosti na výchozí porovnávací rovnosti.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

Dictionary<TKey,TValue>vyžaduje implementaci rovnosti k určení, zda jsou klíče stejné.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Tento konstruktor používá výchozí porovnávací EqualityComparer<T>.Defaultmetodu obecného porovnávání.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Pokud typ TKey System.IEquatable<T> implementuje obecné rozhraní, použije výchozí porovnávání rovnosti tuto implementaci.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Alternativně můžete zadat implementaci IEqualityComparer<T> obecného rozhraní pomocí konstruktoru, který comparer přijímá parametr.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

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

Tento konstruktor je operace O (1).This constructor is an O(1) operation.

Viz také

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

Inicializuje novou instanci Dictionary<TKey,TValue> třídy, která obsahuje prvky zkopírované ze zadaného IDictionary<TKey,TValue> typu a používá pro typ klíče výchozí porovnávací metodu rovnosti.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))

Parametry

Výjimky

dictionaryobsahuje jeden nebo více duplicitních klíčů.dictionary contains one or more duplicate keys.

Příklady

Následující příklad kódu ukazuje, jak použít Dictionary<TKey,TValue>(IEqualityComparer<TKey>) konstruktor k Dictionary<TKey,TValue> inicializaci s seřazeným obsahem z jiného slovníku.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. Příklad kódu vytvoří SortedDictionary<TKey,TValue> a naplní data v náhodném pořadí a pak SortedDictionary<TKey,TValue> předá do Dictionary<TKey,TValue>(IEqualityComparer<TKey>) konstruktoru a vytvoří objekt Dictionary<TKey,TValue> , který je seřazen.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. To je užitečné v případě, že potřebujete vytvořit seřazený slovník, který bude v určitém bodě statický; kopírování dat z a SortedDictionary<TKey,TValue> Dictionary<TKey,TValue> do zvyšuje rychlost načítání.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
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> musí být jedinečný v závislosti na výchozí porovnávací rovnost; stejně tak musí být každý klíč ve zdroji dictionary také jedinečný v závislosti na výchozí porovnávací rovnosti.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.

Počáteční kapacita nového Dictionary<TKey,TValue> je dostatečně velká, aby obsahovala všechny prvky v dictionary.The initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

Dictionary<TKey,TValue>vyžaduje implementaci rovnosti k určení, zda jsou klíče stejné.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Tento konstruktor používá výchozí porovnávací EqualityComparer<T>.Defaultmetodu obecného porovnávání.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Pokud typ TKey System.IEquatable<T> implementuje obecné rozhraní, použije výchozí porovnávání rovnosti tuto implementaci.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Alternativně můžete zadat implementaci IEqualityComparer<T> obecného rozhraní pomocí konstruktoru, který comparer přijímá parametr.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Tento konstruktor je operace O (n), kde n je počet prvků v dictionary.This constructor is an O(n) operation, where n is the number of elements in dictionary.

Viz také

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

Parametry

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

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

Parametry

comparer
IEqualityComparer<TKey>

Implementace, která se má použít při porovnávání klíčů null nebo použití výchozí hodnoty EqualityComparer<T> pro typ klíče. IEqualityComparer<T>The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Příklady

Následující příklad kódu vytvoří Dictionary<TKey,TValue> u aktuální jazykové verze porovnávání rovnosti rovnosti velkých a malých písmen.The following code example creates a Dictionary<TKey,TValue> with a case-insensitive equality comparer for the current culture. V příkladu jsou přidány čtyři prvky, některé s malými písmeny a některé s velkými písmeny.The example adds four elements, some with lower-case keys and some with upper-case keys. Příklad se pak pokusí přidat element s klíčem, který se liší od existujícího klíče pouze v případě, že zachytí výslednou výjimku a zobrazí chybovou zprávu.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. Nakonec v příkladu se zobrazí prvky ve slovníku.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
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 spolu s porovnávačemi řetězců nerozlišujícími malá a velká písmena StringComparer , které poskytuje třída k vytváření slovníků s řetězcovými klíči nerozlišujícími malá a velká písmena.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Každý klíč v Dictionary<TKey,TValue> musí být jedinečný podle zadané porovnávací metody.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

Dictionary<TKey,TValue>vyžaduje implementaci rovnosti k určení, zda jsou klíče stejné.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Pokud comparer EqualityComparer<T>.Defaultje null, tento konstruktor používá výchozí porovnávací metodu obecného porovnávání.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Pokud typ TKey System.IEquatable<T> implementuje obecné rozhraní, použije výchozí porovnávání rovnosti tuto implementaci.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

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

Tento konstruktor je operace O (1).This constructor is an O(1) operation.

Viz také

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

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

Parametry

capacity
Int32 Int32 Int32 Int32

Počáteční počet prvků, které Dictionary<TKey,TValue> může obsahovat.The initial number of elements that the Dictionary<TKey,TValue> can contain.

Výjimky

Příklady

Následující příklad kódu vytvoří slovník s počáteční kapacitou 4 a naplní ho 4 položkami.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
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> musí být jedinečný v závislosti na výchozí porovnávací rovnosti.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

Kapacita Dictionary<TKey,TValue> je počet prvků, které lze přidat Dictionary<TKey,TValue> do, než je nutné změnit velikost.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. Když jsou prvky přidány do Dictionary<TKey,TValue>, kapacita se automaticky zvýší, jak je požadováno přerozdělením interního pole.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Pokud lze odhadnout velikost kolekce, určení počáteční kapacity eliminuje nutnost provádět různé operace změny velikosti při přidávání prvků do 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>vyžaduje implementaci rovnosti k určení, zda jsou klíče stejné.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Tento konstruktor používá výchozí porovnávací EqualityComparer<T>.Defaultmetodu obecného porovnávání.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Pokud typ TKey System.IEquatable<T> implementuje obecné rozhraní, použije výchozí porovnávání rovnosti tuto implementaci.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. Alternativně můžete zadat implementaci IEqualityComparer<T> obecného rozhraní pomocí konstruktoru, který comparer přijímá parametr.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

Tento konstruktor je operace O (1).This constructor is an O(1) operation.

Viz také

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

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

Parametry

comparer
IEqualityComparer<TKey>

Implementace, která se má použít při porovnávání klíčů null nebo použití výchozí hodnoty EqualityComparer<T> pro typ klíče. IEqualityComparer<T>The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Výjimky

dictionaryobsahuje jeden nebo více duplicitních klíčů.dictionary contains one or more duplicate keys.

Příklady

Následující příklad kódu ukazuje, jak použít Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) konstruktor k Dictionary<TKey,TValue> inicializaci seřazeného obsahu s necitlivým písmenem z jiného slovníku.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. Příklad kódu vytvoří SortedDictionary<TKey,TValue> porovnávání bez rozlišení velkých a malých písmen a naplní jej daty v náhodném pořadí, poté SortedDictionary<TKey,TValue> předá do Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) konstruktoru, společně s porovnávacím porovnáváním bez rozlišení velkých a malých písmen, Dictionary<TKey,TValue> vytvoří který je seřazený.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. To je užitečné v případě, že potřebujete vytvořit seřazený slovník, který bude v určitém bodě statický; kopírování dat z a SortedDictionary<TKey,TValue> Dictionary<TKey,TValue> do zvyšuje rychlost načítání.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.

Poznámka

Když vytvoříte nový slovník s porovnáváním bez rozlišení velkých a malých písmen a naplníte ho položkami ze slovníku, který používá porovnávání rozlišovat velká a malá písmena, jako v tomto příkladu, dojde k výjimce, pokud vstupní slovník obsahuje klíče, které se liší pouze písmeny.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
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 spolu s porovnávačemi řetězců nerozlišujícími malá a velká písmena StringComparer , které poskytuje třída k vytváření slovníků s řetězcovými klíči nerozlišujícími malá a velká písmena.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Každý klíč v Dictionary<TKey,TValue> musí být na základě zadané porovnávací metody jedinečný; stejně tak musí být každý klíč ve zdroji dictionary také jedinečný v závislosti na zadané porovnávací.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.

Poznámka

Například duplicitní klíče mohou nastat, pokud comparer je jedním z porovnávacích řetězců necitlivých na StringComparer velká a malá písmena poskytnutých dictionary třídou a nepoužívá se klíč porovnávání bez rozlišení velkých a malých písmen.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.

Počáteční kapacita nového Dictionary<TKey,TValue> je dostatečně velká, aby obsahovala všechny prvky v dictionary.The initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

Dictionary<TKey,TValue>vyžaduje implementaci rovnosti k určení, zda jsou klíče stejné.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Pokud comparer EqualityComparer<T>.Defaultje null, tento konstruktor používá výchozí porovnávací metodu obecného porovnávání.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Pokud typ TKey System.IEquatable<T> implementuje obecné rozhraní, použije výchozí porovnávání rovnosti tuto implementaci.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Tento konstruktor je operace O (n), kde n je počet prvků v dictionary.This constructor is an O(n) operation, where n is the number of elements in dictionary.

Viz také

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

Parametry

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

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

Parametry

capacity
Int32 Int32 Int32 Int32

Počáteční počet prvků, které Dictionary<TKey,TValue> může obsahovat.The initial number of elements that the Dictionary<TKey,TValue> can contain.

comparer
IEqualityComparer<TKey>

Implementace, která se má použít při porovnávání klíčů null nebo použití výchozí hodnoty EqualityComparer<T> pro typ klíče. IEqualityComparer<T>The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

Výjimky

Příklady

Následující příklad kódu vytvoří Dictionary<TKey,TValue> s počáteční kapacitou 5 a porovnávací výraz rovnosti nerozlišuje velká a malá písmena pro aktuální jazykovou verzi.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. V příkladu jsou přidány čtyři prvky, některé s malými písmeny a některé s velkými písmeny.The example adds four elements, some with lower-case keys and some with upper-case keys. Příklad se pak pokusí přidat element s klíčem, který se liší od existujícího klíče pouze v případě, že zachytí výslednou výjimku a zobrazí chybovou zprávu.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. Nakonec v příkladu se zobrazí prvky ve slovníku.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
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 spolu s porovnávačemi řetězců nerozlišujícími malá a velká písmena StringComparer , které poskytuje třída k vytváření slovníků s řetězcovými klíči nerozlišujícími malá a velká písmena.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Každý klíč v Dictionary<TKey,TValue> musí být jedinečný podle zadané porovnávací metody.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

Kapacita Dictionary<TKey,TValue> je počet prvků, které lze přidat Dictionary<TKey,TValue> do, než je nutné změnit velikost.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. Když jsou prvky přidány do Dictionary<TKey,TValue>, kapacita se automaticky zvýší, jak je požadováno přerozdělením interního pole.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Pokud lze odhadnout velikost kolekce, určení počáteční kapacity eliminuje nutnost provádět různé operace změny velikosti při přidávání prvků do 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>vyžaduje implementaci rovnosti k určení, zda jsou klíče stejné.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. Pokud comparer EqualityComparer<T>.Defaultje null, tento konstruktor používá výchozí porovnávací metodu obecného porovnávání.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. Pokud typ TKey System.IEquatable<T> implementuje obecné rozhraní, použije výchozí porovnávání rovnosti tuto implementaci.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

Tento konstruktor je operace O (1).This constructor is an O(1) operation.

Viz také

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

Inicializuje novou instanci třídy Dictionary<TKey,TValue> třídy se serializovanými daty.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)

Parametry

info
SerializationInfo SerializationInfo SerializationInfo SerializationInfo

Objekt obsahující informace požadované k Dictionary<TKey,TValue>serializaci. SerializationInfoA SerializationInfo object containing the information required to serialize the Dictionary<TKey,TValue>.

context
StreamingContext StreamingContext StreamingContext StreamingContext

Struktura obsahující zdroj a cíl serializovaného datového proudu přidruženého Dictionary<TKey,TValue>k. StreamingContextA StreamingContext structure containing the source and destination of the serialized stream associated with the Dictionary<TKey,TValue>.

Poznámky

Tento konstruktor se volá během deserializace, aby rekonstruovat objekt předaný přes datový proud.This constructor is called during deserialization to reconstitute an object transmitted over a stream. Další informace najdete v tématu serializace XML a SOAP.For more information, see XML and SOAP Serialization.

Viz také

Platí pro