Dictionary<TKey,TValue> Konstruktoren

Definition

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse.

Überlädt

Dictionary<TKey,TValue>()

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der Standardanfangskapazität, wobei der Standardgleichheitsvergleich für den Schlüsseltyp verwendet wird.

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus dem angegebenen IDictionary<TKey,TValue> kopierte Elemente enthält und den Standardgleichheitsvergleich für den Schlüsseltyp verwendet.

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus der angegebenen IEnumerable<T>-Schnittstelle kopierte Elemente enthält.

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

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der Standardanfangskapazität und dem angegebenen IEqualityComparer<T>.

Dictionary<TKey,TValue>(Int32)

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der Standardanfangskapazität, wobei der Standardgleichheitsvergleich für den Schlüsseltyp verwendet wird.

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus dem angegebenen IDictionary<TKey,TValue> kopierte Elemente enthält und den angegebenen IEqualityComparer<T> verwendet.

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus dem angegebenen IEnumerable<T> kopierte Elemente enthält und den angegebenen IEqualityComparer<T> verwendet.

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

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der angegebenen Anfangskapazität und dem angegebenen IEqualityComparer<T>.

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse mit serialisierten Daten.

Dictionary<TKey,TValue>()

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der Standardanfangskapazität, wobei der Standardgleichheitsvergleich für den Schlüsseltyp verwendet wird.

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

Beispiele

Im folgenden Codebeispiel wird eine leere Dictionary<TKey,TValue> Zeichenfolge mit Zeichenfolgenschlüsseln erstellt und die Add -Methode verwendet, um einige Elemente hinzuzufügen. Das Beispiel zeigt, dass die Add -Methode eine ArgumentException auslöst, wenn versucht wird, einen doppelten Schlüssel hinzuzufügen.

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die -Klasse bereitgestellt Dictionary<TKey,TValue> wird.

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

Hinweise

Jeder Schlüssel in einem Dictionary<TKey,TValue> muss gemäß dem Standardgleichheitsvergleich eindeutig sein.

Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierungen, um zu bestimmen, ob Schlüssel gleich sind. Dieser Konstruktor verwendet den generischen Standardgleichheitsvergleich. EqualityComparer<T>.Default Wenn type TKey die System.IEquatable<T> generische Schnittstelle implementiert, verwendet der Standardgleichheitsvergleich diese Implementierung. Alternativ können Sie eine Implementierung der IEqualityComparer<T> generischen Schnittstelle angeben, indem Sie einen Konstruktor verwenden, der einen comparer Parameter akzeptiert.

Hinweis

Wenn Sie die Größe der Auflistung schätzen können, entfällt durch die Verwendung eines Konstruktors, der die anfängliche Kapazität angibt, die Notwendigkeit, eine Reihe von Größenänderungsvorgängen auszuführen, während Elemente zur hinzugefügt Dictionary<TKey,TValue> werden.

Dieser Konstruktor ist ein O(1)-Vorgang.

Siehe auch

Gilt für

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus dem angegebenen IDictionary<TKey,TValue> kopierte Elemente enthält und den Standardgleichheitsvergleich für den Schlüsseltyp verwendet.

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

Parameter

dictionary
IDictionary<TKey,TValue>

Das IDictionary<TKey,TValue>, dessen Elemente in das neue Dictionary<TKey,TValue> kopiert werden.

Ausnahmen

dictionary ist null.

dictionary enthält mindestens einen doppelten Schlüssel.

Beispiele

Das folgende Codebeispiel zeigt, wie der Dictionary<TKey,TValue>(IEqualityComparer<TKey>) -Konstruktor verwendet wird, um mit Dictionary<TKey,TValue> sortierten Inhalten aus einem anderen Wörterbuch zu initialisieren. Im Codebeispiel wird eine erstellt SortedDictionary<TKey,TValue> und in zufälliger Reihenfolge mit Daten aufgefüllt. Anschließend wird SortedDictionary<TKey,TValue> an den Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Konstruktor übergeben, wodurch eine sortierte erstellt Dictionary<TKey,TValue> wird. Dies ist nützlich, wenn Sie ein sortiertes Wörterbuch erstellen müssen, das zu einem bestimmten Zeitpunkt statisch wird. Das Kopieren der Daten aus einer SortedDictionary<TKey,TValue> in eine verbessert die Dictionary<TKey,TValue> Abrufgeschwindigkeit.

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

Hinweise

Jeder Schlüssel in einem Dictionary<TKey,TValue> muss gemäß dem Standardgleichheitsvergleich eindeutig sein. Ebenso muss jeder Schlüssel in der Quelle dictionary entsprechend dem Standardgleichheitsvergleich eindeutig sein.

Die anfängliche Kapazität des neuen Dictionary<TKey,TValue> ist groß genug, um alle Elemente in zu dictionary enthalten.

Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierungen, um zu bestimmen, ob Schlüssel gleich sind. Dieser Konstruktor verwendet den generischen Standardgleichheitsvergleich. EqualityComparer<T>.Default Wenn type TKey die System.IEquatable<T> generische Schnittstelle implementiert, verwendet der Standardgleichheitsvergleich diese Implementierung. Alternativ können Sie eine Implementierung der IEqualityComparer<T> generischen Schnittstelle angeben, indem Sie einen Konstruktor verwenden, der einen comparer Parameter akzeptiert.

Dieser Konstruktor ist ein O(n)-Vorgang, wobei n die Anzahl der Elemente in dictionary ist.

Siehe auch

Gilt für

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus der angegebenen IEnumerable<T>-Schnittstelle kopierte Elemente enthält.

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

Parameter

collection
IEnumerable<KeyValuePair<TKey,TValue>>

Die IEnumerable<T>-Schnittstelle, deren Elemente in die neue Dictionary<TKey,TValue>-Klasse kopiert werden.

Ausnahmen

collection ist null.

collection enthält mindestens einen duplizierten Schlüssel.

Gilt für

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

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der Standardanfangskapazität und dem angegebenen 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))

Parameter

comparer
IEqualityComparer<TKey>

Die IEqualityComparer<T>-Implementierung, die zum Vergleichen von Schlüsseln verwendet werden soll, oder null, wenn der Standard-EqualityComparer<T> für diesen Schlüsseltyp verwendet werden soll.

Beispiele

Im folgenden Codebeispiel wird ein Dictionary<TKey,TValue> mit einem Gleichheitsvergleich ohne Beachtung der Groß-/Kleinschreibung für die aktuelle Kultur erstellt. Im Beispiel werden vier Elemente hinzugefügt, einige mit Schlüsseln in Kleinbuchstaben und andere mit Schlüsseln in Großbuchstaben. Im Beispiel wird dann versucht, ein Element mit einem Schlüssel hinzuzufügen, das sich nur durch die Case-Anweisung von einem vorhandenen Schlüssel unterscheidet, die resultierende Ausnahme abfängt und eine Fehlermeldung anzeigt. Schließlich werden im Beispiel die Elemente im Wörterbuch angezeigt.

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

Hinweise

Verwenden Sie diesen Konstruktor mit den Zeichenfolgenvergleichen ohne Beachtung der Groß-/Kleinschreibung, die von der -Klasse bereitgestellt StringComparer werden, um Wörterbücher mit Zeichenfolgenschlüsseln ohne Beachtung der Groß-/Kleinschreibung zu erstellen.

Jeder Schlüssel in einem Dictionary<TKey,TValue> muss entsprechend dem angegebenen Vergleich eindeutig sein.

Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierungen, um zu bestimmen, ob Schlüssel gleich sind. Wenn comparer null ist, verwendet dieser Konstruktor den generischen Standardgleichheitsvergleich, EqualityComparer<T>.Default . Wenn type TKey die System.IEquatable<T> generische Schnittstelle implementiert, verwendet der Standardgleichheitsvergleich diese Implementierung.

Hinweis

Wenn Sie die Größe der Auflistung schätzen können, entfällt durch die Verwendung eines Konstruktors, der die anfängliche Kapazität angibt, die Notwendigkeit, eine Reihe von Größenänderungsvorgängen auszuführen, während Elemente zur hinzugefügt Dictionary<TKey,TValue> werden.

Dieser Konstruktor ist ein O(1)-Vorgang.

Siehe auch

Gilt für

Dictionary<TKey,TValue>(Int32)

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der Standardanfangskapazität, wobei der Standardgleichheitsvergleich für den Schlüsseltyp verwendet wird.

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)

Parameter

capacity
Int32

Die anfängliche Anzahl von Elementen, die das Dictionary<TKey,TValue> enthalten kann.

Ausnahmen

capacity ist kleiner als 0.

Beispiele

Im folgenden Codebeispiel wird ein Wörterbuch mit einer Anfangskapazität von 4 erstellt und mit 4 Einträgen aufgefüllt.

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

Hinweise

Jeder Schlüssel in einem Dictionary<TKey,TValue> muss gemäß dem Standardgleichheitsvergleich eindeutig sein.

Die Kapazität eines Dictionary<TKey,TValue> ist die Anzahl von Elementen, die hinzugefügt werden können, bevor eine Dictionary<TKey,TValue> Größenänderung erforderlich ist. Wenn Einem Elemente hinzugefügt Dictionary<TKey,TValue> werden, wird die Kapazität automatisch nach Bedarf erhöht, indem das interne Array neu ermittelt wird.

Wenn die Größe der Auflistung geschätzt werden kann, entfällt die Notwendigkeit, beim Angeben der Anfangskapazität eine Reihe von Größenänderungsvorgängen auszuführen, während Elemente zur hinzugefügt Dictionary<TKey,TValue> werden.

Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierungen, um zu bestimmen, ob Schlüssel gleich sind. Dieser Konstruktor verwendet den generischen Standardgleichheitsvergleich. EqualityComparer<T>.Default Wenn type TKey die System.IEquatable<T> generische Schnittstelle implementiert, verwendet der Standardgleichheitsvergleich diese Implementierung. Alternativ können Sie eine Implementierung der IEqualityComparer<T> generischen Schnittstelle angeben, indem Sie einen Konstruktor verwenden, der einen comparer Parameter akzeptiert.

Dieser Konstruktor ist ein O(1)-Vorgang.

Siehe auch

Gilt für

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus dem angegebenen IDictionary<TKey,TValue> kopierte Elemente enthält und den angegebenen IEqualityComparer<T> verwendet.

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

Parameter

dictionary
IDictionary<TKey,TValue>

Das IDictionary<TKey,TValue>, dessen Elemente in das neue Dictionary<TKey,TValue> kopiert werden.

comparer
IEqualityComparer<TKey>

Die IEqualityComparer<T>-Implementierung, die zum Vergleichen von Schlüsseln verwendet werden soll, oder null, wenn der Standard-EqualityComparer<T> für diesen Schlüsseltyp verwendet werden soll.

Ausnahmen

dictionary ist null.

dictionary enthält mindestens einen doppelten Schlüssel.

Beispiele

Das folgende Codebeispiel zeigt, wie der Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) -Konstruktor verwendet wird, um einen Dictionary<TKey,TValue> mit sortierten Inhalten aus einem anderen Wörterbuch ohne Beachtung der Groß-/Kleinschreibung zu initialisieren. Im Codebeispiel wird ein mit einem Vergleich ohne Beachtung der SortedDictionary<TKey,TValue> Groß-/Kleinschreibung erstellt und in zufälliger Reihenfolge mit Daten aufgefüllt. Anschließend wird der zusammen SortedDictionary<TKey,TValue> mit einem Gleichheitsvergleich ohne Beachtung der Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Groß-/Kleinschreibung an den Konstruktor übergeben, wodurch ein sortierter erstellt Dictionary<TKey,TValue> wird. Dies ist nützlich, wenn Sie ein sortiertes Wörterbuch erstellen müssen, das zu einem bestimmten Zeitpunkt statisch wird. Das Kopieren der Daten aus einer SortedDictionary<TKey,TValue> in eine verbessert die Dictionary<TKey,TValue> Abrufgeschwindigkeit.

Hinweis

Wenn Sie ein neues Wörterbuch mit einem Vergleich ohne Beachtung der Groß-/Kleinschreibung erstellen und es mit Einträgen aus einem Wörterbuch auffüllen, das einen Vergleich mit Beachtung der Groß-/Kleinschreibung verwendet, wie in diesem Beispiel, tritt eine Ausnahme auf, wenn das Eingabewörterbuch Schlüssel enthält, die sich nur nach Groß-/Kleinschreibung unterscheiden.

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

Hinweise

Verwenden Sie diesen Konstruktor mit den Zeichenfolgenvergleichen ohne Beachtung der Groß-/Kleinschreibung, die von der -Klasse bereitgestellt StringComparer werden, um Wörterbücher mit Zeichenfolgenschlüsseln ohne Beachtung der Groß-/Kleinschreibung zu erstellen.

Jeder Schlüssel in einem Dictionary<TKey,TValue> muss entsprechend dem angegebenen Vergleich eindeutig sein. Ebenso muss jeder Schlüssel in der Quelle dictionary entsprechend dem angegebenen Vergleich eindeutig sein.

Hinweis

Doppelte Schlüssel können z. B. auftreten, wenn comparer einer der Zeichenfolgenvergleiche ist, bei dem die Groß-/Kleinschreibung nicht beachtet wird, der von der -Klasse bereitgestellt wird, und keinen Vergleichsschlüssel verwendet, bei dem die StringComparer dictionary Groß-/Kleinschreibung nicht beachtet wird.

Die anfängliche Kapazität des neuen Dictionary<TKey,TValue> ist groß genug, um alle Elemente in zu dictionary enthalten.

Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierungen, um zu bestimmen, ob Schlüssel gleich sind. Wenn comparer null ist, verwendet dieser Konstruktor den generischen Standardgleichheitsvergleich, EqualityComparer<T>.Default . Wenn type TKey die System.IEquatable<T> generische Schnittstelle implementiert, verwendet der Standardgleichheitsvergleich diese Implementierung.

Dieser Konstruktor ist ein n O()-Vorgang, wobei n die Anzahl der Elemente in dictionary ist.

Siehe auch

Gilt für

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

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse, die aus dem angegebenen IEnumerable<T> kopierte Elemente enthält und den angegebenen IEqualityComparer<T> verwendet.

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

Parameter

collection
IEnumerable<KeyValuePair<TKey,TValue>>

Das IEnumerable<T>, dessen Elemente in das neue Dictionary<TKey,TValue> kopiert werden.

comparer
IEqualityComparer<TKey>

Die IEqualityComparer<T>-Implementierung, die zum Vergleichen von Schlüsseln verwendet werden soll, oder null, wenn der Standard-EqualityComparer<T> für diesen Schlüsseltyp verwendet werden soll.

Ausnahmen

collection ist null.

collection enthält mindestens einen duplizierten Schlüssel.

Gilt für

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

Initialisiert eine neue, leere Instanz der Dictionary<TKey,TValue>-Klasse mit der angegebenen Anfangskapazität und dem angegebenen 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))

Parameter

capacity
Int32

Die anfängliche Anzahl von Elementen, die das Dictionary<TKey,TValue> enthalten kann.

comparer
IEqualityComparer<TKey>

Die IEqualityComparer<T>-Implementierung, die zum Vergleichen von Schlüsseln verwendet werden soll, oder null, wenn der Standard-EqualityComparer<T> für diesen Schlüsseltyp verwendet werden soll.

Ausnahmen

capacity ist kleiner als 0.

Beispiele

Im folgenden Codebeispiel wird ein Dictionary<TKey,TValue> mit einer anfänglichen Kapazität von 5 und einem Gleichheitsvergleich ohne Beachtung der Groß-/Kleinschreibung für die aktuelle Kultur erstellt. Im Beispiel werden vier Elemente hinzugefügt, einige mit Schlüsseln in Kleinbuchstaben und andere mit Schlüsseln in Großbuchstaben. Im Beispiel wird dann versucht, ein Element mit einem Schlüssel hinzuzufügen, das sich nur durch die Case-Anweisung von einem vorhandenen Schlüssel unterscheidet, die resultierende Ausnahme abfängt und eine Fehlermeldung anzeigt. Schließlich werden im Beispiel die Elemente im Wörterbuch angezeigt.

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

Hinweise

Verwenden Sie diesen Konstruktor mit den Zeichenfolgenvergleichen ohne Beachtung der Groß-/Kleinschreibung, die von der -Klasse bereitgestellt StringComparer werden, um Wörterbücher mit Zeichenfolgenschlüsseln ohne Beachtung der Groß-/Kleinschreibung zu erstellen.

Jeder Schlüssel in einem Dictionary<TKey,TValue> muss entsprechend dem angegebenen Vergleich eindeutig sein.

Die Kapazität eines Dictionary<TKey,TValue> ist die Anzahl von Elementen, die hinzugefügt werden können, bevor eine Dictionary<TKey,TValue> Größenänderung erforderlich ist. Wenn Einem Elemente hinzugefügt Dictionary<TKey,TValue> werden, wird die Kapazität automatisch nach Bedarf erhöht, indem das interne Array neu ermittelt wird.

Wenn die Größe der Auflistung geschätzt werden kann, entfällt die Notwendigkeit, beim Angeben der Anfangskapazität eine Reihe von Größenänderungsvorgängen auszuführen, während Elemente zur hinzugefügt Dictionary<TKey,TValue> werden.

Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierungen, um zu bestimmen, ob Schlüssel gleich sind. Wenn comparer null ist, verwendet dieser Konstruktor den generischen Standardgleichheitsvergleich, EqualityComparer<T>.Default . Wenn type TKey die System.IEquatable<T> generische Schnittstelle implementiert, verwendet der Standardgleichheitsvergleich diese Implementierung.

Dieser Konstruktor ist ein O(1)-Vorgang.

Siehe auch

Gilt für

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse mit serialisierten Daten.

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)

Parameter

info
SerializationInfo

Ein SerializationInfo-Objekt mit den zum Serialisieren der Dictionary<TKey,TValue> erforderlichen Informationen.

context
StreamingContext

Eine StreamingContext-Struktur mit der Quelle und dem Ziel des entsprechenden serialisierten Streams für Dictionary<TKey,TValue>.

Hinweise

Dieser Konstruktor wird während der Deserialisierung aufgerufen, um ein objekt, das über einen Stream übertragen wird, wiederhergestellt zu werden. Weitere Informationen finden Sie unter XML- und SOAP-Serialisierung.

Siehe auch

Gilt für