Dictionary<TKey,TValue> Konstruktoren
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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) |
Veraltet.
Initialisiert eine neue Instanz der Dictionary<TKey,TValue>-Klasse mit serialisierten Daten. |
Dictionary<TKey,TValue>()
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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> von Zeichenfolgen mit Zeichenfolgenschlüsseln erstellt und die Add -Methode verwendet, um einige Elemente hinzuzufügen. Das Beispiel zeigt, dass die Add -Methode einen ArgumentException auslöst, wenn versucht wird, einen doppelten Schlüssel hinzuzufügen.
Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die Dictionary<TKey,TValue>-Klasse bereitgestellt 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 Standardmäßigen Gleichheitsvergleich eindeutig sein.
Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierung, um zu bestimmen, ob Die Schlüssel gleich sind. Dieser Konstruktor verwendet den standardmäßigen generischen Gleichheitsvergleich 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 generischen Schnittstelle mithilfe eines Konstruktors angeben, der IEqualityComparer<T> einen comparer
Parameter akzeptiert.
Hinweis
Wenn Sie die Größe der Auflistung schätzen können, entfällt die Verwendung eines Konstruktors, der die anfängliche Kapazität angibt, eine Reihe von Größenänderungsvorgängen beim Hinzufügen von Elementen zu Dictionary<TKey,TValue>.
Dieser Konstruktor ist ein O(1)-Vorgang.
Weitere Informationen
Gilt für:
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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
Im folgenden Codebeispiel wird gezeigt, wie Sie den Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Konstruktor verwenden, um einen Dictionary<TKey,TValue> mit sortiertem Inhalt aus einem anderen Wörterbuch zu initialisieren. Im Codebeispiel wird ein SortedDictionary<TKey,TValue> erstellt und mit Daten in zufälliger Reihenfolge aufgefüllt, dann an den Dictionary<TKey,TValue>(IEqualityComparer<TKey>) Konstruktor übergeben SortedDictionary<TKey,TValue> und ein Dictionary<TKey,TValue> sortiertes erstellt. Dies ist nützlich, wenn Sie ein sortiertes Wörterbuch erstellen müssen, das irgendwann statisch wird. Das Kopieren der Daten aus einem SortedDictionary<TKey,TValue> in einen Dictionary<TKey,TValue> verbessert die 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 Standardmäßigen Gleichheitsvergleich eindeutig sein. Ebenso muss jeder Schlüssel in der Quelle dictionary
gemäß dem Standardmäßigen Gleichheitsvergleich eindeutig sein.
Die anfängliche Kapazität des neuen Dictionary<TKey,TValue> ist groß genug, um alle Elemente in dictionary
zu enthalten.
Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierung, um zu bestimmen, ob Die Schlüssel gleich sind. Dieser Konstruktor verwendet den standardmäßigen generischen Gleichheitsvergleich 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 generischen Schnittstelle mithilfe eines Konstruktors angeben, der IEqualityComparer<T> einen comparer
Parameter akzeptiert.
Dieser Konstruktor ist ein O(n)-Vorgang, wobei n die Anzahl der Elemente in dictionary
ist.
Weitere Informationen
Gilt für:
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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>>
Das IEnumerable<T>, dessen Elemente in das neue Dictionary<TKey,TValue> kopiert werden.
Ausnahmen
collection
ist null
.
collection
enthält mindestens einen doppelten Schlüssel.
Gilt für:
Dictionary<TKey,TValue>(IEqualityComparer<TKey>)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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 Kleinbuchstaben und einige mit Großbuchstaben. Im Beispiel wird dann versucht, ein Element mit einem Schlüssel hinzuzufügen, der sich von einem vorhandenen Schlüssel nur nach Groß- und Kleinschreibung unterscheidet, fängt die resultierende Ausnahme ab und zeigt eine Fehlermeldung an. 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 von der -Klasse bereitgestellten Zeichenfolgenvergleichern ohne Beachtung der StringComparer Groß-/Kleinschreibung, um Wörterbücher mit Zeichenfolgenschlüsseln zu erstellen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.
Jeder Schlüssel in einem Dictionary<TKey,TValue> muss gemäß dem angegebenen Vergleich eindeutig sein.
Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierung, um zu bestimmen, ob Die Schlüssel gleich sind. Wenn comparer
ist null
, verwendet dieser Konstruktor den standardmäßigen generischen Gleichheitsvergleich 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 die Verwendung eines Konstruktors, der die anfängliche Kapazität angibt, eine Reihe von Größenänderungsvorgängen beim Hinzufügen von Elementen zu Dictionary<TKey,TValue>.
Dieser Konstruktor ist ein O(1)-Vorgang.
Weitere Informationen
Gilt für:
Dictionary<TKey,TValue>(Int32)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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 Standardmäßigen Gleichheitsvergleich eindeutig sein.
Die Kapazität eines Dictionary<TKey,TValue> ist die Anzahl von Elementen, die dem hinzugefügt werden können, bevor eine Dictionary<TKey,TValue> Größenänderung erforderlich ist. Wenn Elemente zu einem Dictionary<TKey,TValue>hinzugefügt werden, wird die Kapazität bei Bedarf automatisch erhöht, indem das interne Array neu zugeordnet wird.
Wenn die Größe der Auflistung geschätzt werden kann, entfällt die Angabe der anfänglichen Kapazität die Notwendigkeit, eine Reihe von Größenänderungsvorgängen beim Hinzufügen von Elementen zu Dictionary<TKey,TValue>durchzuführen.
Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierung, um zu bestimmen, ob Die Schlüssel gleich sind. Dieser Konstruktor verwendet den standardmäßigen generischen Gleichheitsvergleich 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 generischen Schnittstelle mithilfe eines Konstruktors angeben, der IEqualityComparer<T> einen comparer
Parameter akzeptiert.
Dieser Konstruktor ist ein O(1)-Vorgang.
Weitere Informationen
Gilt für:
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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
Im folgenden Codebeispiel wird gezeigt, wie Sie den Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Konstruktor verwenden, um einen inhalt ohne Beachtung der Groß-/Kleinschreibung aus einem Dictionary<TKey,TValue> anderen Wörterbuch zu initialisieren. Im Codebeispiel wird ein SortedDictionary<TKey,TValue> mit einem Vergleich ohne Beachtung der Groß-/Kleinschreibung erstellt und mit Daten in zufälliger Reihenfolge aufgefüllt. Anschließend übergibt sie SortedDictionary<TKey,TValue> an den Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) Konstruktor, zusammen mit einem Gleichheitsvergleich ohne Beachtung der Groß-/Kleinschreibung, wodurch ein Dictionary<TKey,TValue> sortiert wird. Dies ist nützlich, wenn Sie ein sortiertes Wörterbuch erstellen müssen, das irgendwann statisch wird. Das Kopieren der Daten aus einem SortedDictionary<TKey,TValue> in einen Dictionary<TKey,TValue> verbessert die 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 zwischen Groß- und Kleinschreibung verwendet, tritt eine Ausnahme auf, wenn das Eingabewörterbuch Über Schlüssel verfügt, die sich nur nach Groß- und 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 von der -Klasse bereitgestellten Zeichenfolgenvergleichern ohne Beachtung der StringComparer Groß-/Kleinschreibung, um Wörterbücher mit Zeichenfolgenschlüsseln zu erstellen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.
Jeder Schlüssel in einem Dictionary<TKey,TValue> muss gemäß dem angegebenen Vergleich eindeutig sein. Ebenso muss jeder Schlüssel in der Quelle dictionary
gemäß dem angegebenen Vergleich eindeutig sein.
Hinweis
Beispielsweise können doppelte Schlüssel auftreten, wenn comparer
einer der von der -Klasse bereitgestellten Zeichenfolgenvergleiche ohne Beachtung der Groß-/Kleinschreibung ist und dictionary
keinen Vergleichsschlüssel ohne Beachtung der StringComparer Groß-/Kleinschreibung verwendet.
Die anfängliche Kapazität des neuen Dictionary<TKey,TValue> ist groß genug, um alle Elemente in dictionary
zu enthalten.
Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierung, um zu bestimmen, ob Die Schlüssel gleich sind. Wenn comparer
ist null
, verwendet dieser Konstruktor den standardmäßigen generischen Gleichheitsvergleich EqualityComparer<T>.Default. Wenn type TKey
die System.IEquatable<T> generische Schnittstelle implementiert, verwendet der Standardgleichheitsvergleich diese Implementierung.
Bei diesem Konstruktor handelt es sich um einen O(n
)-Vorgang, bei dem n
die Anzahl der Elemente in dictionary
angegeben ist.
Weitere Informationen
Gilt für:
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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 doppelten Schlüssel.
Gilt für:
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
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 Anfangskapazitä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 Kleinbuchstaben und einige mit Großbuchstaben. Im Beispiel wird dann versucht, ein Element mit einem Schlüssel hinzuzufügen, der sich von einem vorhandenen Schlüssel nur nach Groß- und Kleinschreibung unterscheidet, fängt die resultierende Ausnahme ab und zeigt eine Fehlermeldung an. 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 von der -Klasse bereitgestellten Zeichenfolgenvergleichern ohne Beachtung der StringComparer Groß-/Kleinschreibung, um Wörterbücher mit Zeichenfolgenschlüsseln zu erstellen, bei denen die Groß-/Kleinschreibung nicht beachtet wird.
Jeder Schlüssel in einem Dictionary<TKey,TValue> muss gemäß dem angegebenen Vergleich eindeutig sein.
Die Kapazität eines Dictionary<TKey,TValue> ist die Anzahl von Elementen, die dem hinzugefügt werden können, bevor eine Dictionary<TKey,TValue> Größenänderung erforderlich ist. Wenn Elemente zu einem Dictionary<TKey,TValue>hinzugefügt werden, wird die Kapazität bei Bedarf automatisch erhöht, indem das interne Array neu zugeordnet wird.
Wenn die Größe der Auflistung geschätzt werden kann, entfällt die Angabe der anfänglichen Kapazität die Notwendigkeit, eine Reihe von Größenänderungsvorgängen beim Hinzufügen von Elementen zu Dictionary<TKey,TValue>durchzuführen.
Dictionary<TKey,TValue> erfordert eine Gleichheitsimplementierung, um zu bestimmen, ob Die Schlüssel gleich sind. Wenn comparer
ist null
, verwendet dieser Konstruktor den standardmäßigen generischen Gleichheitsvergleich 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.
Weitere Informationen
Gilt für:
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
- Quelle:
- Dictionary.cs
Achtung
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
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);
[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)
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>.
- Attribute
Hinweise
Dieser Konstruktor wird während der Deserialisierung aufgerufen, um ein Objekt neu zu erstellen, das über einen Stream übertragen wird. Weitere Informationen finden Sie unter XML- und SOAP-Serialisierung.