Dictionary<TKey,TValue> Costruttori
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Inizializza una nuova istanza della classe Dictionary<TKey,TValue>.
Overload
Dictionary<TKey,TValue>() |
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con capacità iniziale predefinita e che usa l'operatore di confronto di eguaglianza predefinito per il tipo di chiave. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) |
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene elementi copiati dall'interfaccia IDictionary<TKey,TValue> specificata e che usa l'operatore di confronto uguaglianze predefinito per il tipo di chiave. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) |
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene gli elementi copiati dall'oggetto IEnumerable<T> specificato. |
Dictionary<TKey,TValue>(IEqualityComparer<TKey>) |
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con la capacità iniziale predefinita e che usa l'interfaccia IEqualityComparer<T> specificata. |
Dictionary<TKey,TValue>(Int32) |
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con capacità iniziale specificata e che usa l'operatore di confronto di eguaglianza predefinito per il tipo di chiave. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) |
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene gli elementi copiati dall'interfaccia IDictionary<TKey,TValue> specificata e che utilizza l'interfaccia IEqualityComparer<T> indicata. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) |
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene gli elementi copiati dall'interfaccia IEnumerable<T> specificata e che utilizza l'interfaccia IEqualityComparer<T> indicata. |
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) |
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con la capacità iniziale predefinita e che usa l'interfaccia IEqualityComparer<T> specificata. |
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) |
Obsoleti.
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> con dati serializzati. |
Dictionary<TKey,TValue>()
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con capacità iniziale predefinita e che usa l'operatore di confronto di eguaglianza predefinito per il tipo di chiave.
public:
Dictionary();
public Dictionary ();
Public Sub New ()
Esempio
Nell'esempio di codice seguente viene creato un vuoto Dictionary<TKey,TValue> di stringhe con chiavi di stringa e viene usato il Add metodo per aggiungere alcuni elementi. Nell'esempio viene illustrato che il Add metodo genera un oggetto ArgumentException quando si tenta di aggiungere una chiave duplicata.
Questo esempio di codice fa parte di un esempio più grande fornito per la Dictionary<TKey,TValue> classe.
// 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
Commenti
Ogni chiave in un Dictionary<TKey,TValue> deve essere univoca in base al comparer di uguaglianza predefinito.
Dictionary<TKey,TValue> richiede un'implementazione di uguaglianza per determinare se le chiavi sono uguali. Questo costruttore usa il comparer di uguaglianza generico predefinito, EqualityComparer<T>.Default. Se il tipo TKey
implementa l'interfaccia System.IEquatable<T> generica, il comparer di uguaglianza predefinito usa tale implementazione. In alternativa, è possibile specificare un'implementazione dell'interfaccia IEqualityComparer<T> generica usando un costruttore che accetta un comparer
parametro.
Nota
Se è possibile stimare le dimensioni della raccolta, usando un costruttore che specifica la capacità iniziale elimina la necessità di eseguire una serie di operazioni di ridimensionamento durante l'aggiunta di elementi all'oggetto Dictionary<TKey,TValue>.
Questo costruttore è un'operazione O(1).
Vedi anche
Si applica a
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene elementi copiati dall'interfaccia IDictionary<TKey,TValue> specificata e che usa l'operatore di confronto uguaglianze predefinito per il tipo di chiave.
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))
Parametri
- dictionary
- IDictionary<TKey,TValue>
Oggetto IDictionary<TKey,TValue> i cui elementi sono copiati nel nuovo oggetto Dictionary<TKey,TValue>.
Eccezioni
dictionary
è null
.
dictionary
contiene una o più chiavi duplicate.
Esempio
Nell'esempio di codice seguente viene illustrato come usare il Dictionary<TKey,TValue>(IEqualityComparer<TKey>) costruttore per inizializzare un Dictionary<TKey,TValue> oggetto con contenuto ordinato da un altro dizionario. L'esempio di codice crea un oggetto SortedDictionary<TKey,TValue> e lo popola con i dati in ordine casuale, quindi passa al SortedDictionary<TKey,TValue>Dictionary<TKey,TValue>(IEqualityComparer<TKey>) costruttore, creando un Dictionary<TKey,TValue> oggetto ordinato. Questo è utile se è necessario compilare un dizionario ordinato che a un certo punto diventa statico; la copia dei dati da un SortedDictionary<TKey,TValue> a a un Dictionary<TKey,TValue> migliora la velocità di recupero.
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
Commenti
Ogni chiave in un Dictionary<TKey,TValue> deve essere univoca in base al comparer di uguaglianza predefinito. Analogamente, ogni chiave nell'origine dictionary
deve essere univoca anche in base al comparer di uguaglianza predefinito.
La capacità iniziale del nuovo Dictionary<TKey,TValue> è sufficiente per contenere tutti gli elementi in dictionary
.
Dictionary<TKey,TValue> richiede un'implementazione di uguaglianza per determinare se le chiavi sono uguali. Questo costruttore usa il comparer di uguaglianza generico predefinito, EqualityComparer<T>.Default. Se il tipo TKey
implementa l'interfaccia System.IEquatable<T> generica, il comparer di uguaglianza predefinito usa tale implementazione. In alternativa, è possibile specificare un'implementazione dell'interfaccia IEqualityComparer<T> generica usando un costruttore che accetta un comparer
parametro.
Questo costruttore è un'operazione O(n), dove n è il numero di elementi in dictionary
.
Vedi anche
Si applica a
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene gli elementi copiati dall'oggetto IEnumerable<T> specificato.
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)))
Parametri
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
Oggetto IEnumerable<T> i cui elementi sono copiati nel nuovo oggetto Dictionary<TKey,TValue>.
Eccezioni
collection
è null
.
collection
contiene una o più chiavi duplicate.
Si applica a
Dictionary<TKey,TValue>(IEqualityComparer<TKey>)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con la capacità iniziale predefinita e che usa l'interfaccia IEqualityComparer<T> specificata.
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))
Parametri
- comparer
- IEqualityComparer<TKey>
Implementazione di IEqualityComparer<T> da usare per confrontare le chiavi oppure null
per usare l'oggetto EqualityComparer<T> predefinito per il tipo di chiave.
Esempio
Nell'esempio di codice seguente viene creato un oggetto con un Dictionary<TKey,TValue> confronto di uguaglianza senza distinzione tra maiuscole e minuscole per le impostazioni cultura correnti. Nell'esempio vengono aggiunti quattro elementi, alcuni con chiavi minuscole e alcune con chiavi maiuscole e minuscole. L'esempio tenta quindi di aggiungere un elemento con una chiave diversa da una chiave esistente solo per caso, rileva l'eccezione risultante e visualizza un messaggio di errore. Infine, nell'esempio vengono visualizzati gli elementi nel dizionario.
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
Commenti
Usare questo costruttore con i comparer di stringhe senza distinzione tra maiuscole e minuscole forniti dalla StringComparer classe per creare dizionari con chiavi stringa senza distinzione tra maiuscole e minuscole.
Ogni chiave in un Dictionary<TKey,TValue> deve essere univoca in base al comparer specificato.
Dictionary<TKey,TValue> richiede un'implementazione di uguaglianza per determinare se le chiavi sono uguali. Se comparer
è null
, questo costruttore usa il comparer di uguaglianza generico predefinito, EqualityComparer<T>.Default. Se il tipo TKey
implementa l'interfaccia System.IEquatable<T> generica, il comparer di uguaglianza predefinito usa tale implementazione.
Nota
Se è possibile stimare le dimensioni della raccolta, usando un costruttore che specifica la capacità iniziale elimina la necessità di eseguire una serie di operazioni di ridimensionamento durante l'aggiunta di elementi all'oggetto Dictionary<TKey,TValue>.
Questo costruttore è un'operazione O(1).
Vedi anche
Si applica a
Dictionary<TKey,TValue>(Int32)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con capacità iniziale specificata e che usa l'operatore di confronto di eguaglianza predefinito per il tipo di chiave.
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)
Parametri
- capacity
- Int32
Numero iniziale degli elementi che Dictionary<TKey,TValue> può contenere.
Eccezioni
capacity
è minore di 0.
Esempio
L'esempio di codice seguente crea un dizionario con una capacità iniziale di 4 e lo popola con 4 voci.
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
Commenti
Ogni chiave in un Dictionary<TKey,TValue> deve essere univoca in base al comparer di uguaglianza predefinito.
La capacità di un Dictionary<TKey,TValue> è il numero di elementi che possono essere aggiunti al Dictionary<TKey,TValue> prima di ridimensionare è necessario. Man mano che gli elementi vengono aggiunti a un Dictionary<TKey,TValue>oggetto , la capacità viene aumentata automaticamente in base alla necessità di riallocare la matrice interna.
Se le dimensioni della raccolta possono essere stimate, specificando la capacità iniziale elimina la necessità di eseguire una serie di operazioni di ridimensionamento durante l'aggiunta di elementi all'oggetto Dictionary<TKey,TValue>.
Dictionary<TKey,TValue> richiede un'implementazione di uguaglianza per determinare se le chiavi sono uguali. Questo costruttore usa il comparer di uguaglianza generico predefinito, EqualityComparer<T>.Default. Se il tipo TKey
implementa l'interfaccia System.IEquatable<T> generica, il comparer di uguaglianza predefinito usa tale implementazione. In alternativa, è possibile specificare un'implementazione dell'interfaccia IEqualityComparer<T> generica usando un costruttore che accetta un comparer
parametro.
Questo costruttore è un'operazione O(1).
Vedi anche
Si applica a
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene gli elementi copiati dall'interfaccia IDictionary<TKey,TValue> specificata e che utilizza l'interfaccia IEqualityComparer<T> indicata.
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))
Parametri
- dictionary
- IDictionary<TKey,TValue>
Oggetto IDictionary<TKey,TValue> i cui elementi sono copiati nel nuovo oggetto Dictionary<TKey,TValue>.
- comparer
- IEqualityComparer<TKey>
Implementazione di IEqualityComparer<T> da usare per confrontare le chiavi oppure null
per usare l'oggetto EqualityComparer<T> predefinito per il tipo di chiave.
Eccezioni
dictionary
è null
.
dictionary
contiene una o più chiavi duplicate.
Esempio
Nell'esempio di codice seguente viene illustrato come usare il Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) costruttore per inizializzare un Dictionary<TKey,TValue> oggetto con contenuto senza distinzione tra maiuscole e minuscole da un altro dizionario. L'esempio di codice crea un oggetto con un SortedDictionary<TKey,TValue> comparer senza distinzione tra maiuscole e minuscole e lo popola con dati in ordine casuale, quindi passa l'oggetto SortedDictionary<TKey,TValue> al costruttore, insieme a Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) un comparer di uguaglianza senza distinzione tra maiuscole e minuscole, creando un Dictionary<TKey,TValue> oggetto ordinato. Questo è utile se è necessario compilare un dizionario ordinato che a un certo punto diventa statico; la copia dei dati da un SortedDictionary<TKey,TValue> a a un Dictionary<TKey,TValue> migliora la velocità di recupero.
Nota
Quando si crea un nuovo dizionario con un comparer senza distinzione tra maiuscole e minuscole e lo popola con voci di un dizionario che usa un comparer con distinzione tra maiuscole e minuscole, come in questo esempio, si verifica un'eccezione se il dizionario di input ha chiavi che differiscono solo in base al caso.
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
Commenti
Usare questo costruttore con i comparer di stringhe senza distinzione tra maiuscole e minuscole forniti dalla StringComparer classe per creare dizionari con chiavi stringa senza distinzione tra maiuscole e minuscole.
Ogni chiave in un Dictionary<TKey,TValue> deve essere univoca in base al comparer specificato. Analogamente, ogni chiave nell'origine dictionary
deve essere univoca anche in base al comparer specificato.
Nota
Ad esempio, le chiavi duplicate possono verificarsi se comparer
è uno dei comparer di stringhe senza distinzione tra maiuscole e minuscole fornite dalla StringComparer classe e non usa una chiave di confronto senza distinzione tra maiuscole e dictionary
minuscole.
La capacità iniziale del nuovo Dictionary<TKey,TValue> è sufficiente per contenere tutti gli elementi in dictionary
.
Dictionary<TKey,TValue> richiede un'implementazione di uguaglianza per determinare se le chiavi sono uguali. Se comparer
è null
, questo costruttore usa il comparer di uguaglianza generico predefinito, EqualityComparer<T>.Default. Se il tipo TKey
implementa l'interfaccia System.IEquatable<T> generica, il comparer di uguaglianza predefinito usa tale implementazione.
Questo costruttore è un'operazione O(n
), dove n
è il numero di elementi in dictionary
.
Vedi anche
Si applica a
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> che contiene gli elementi copiati dall'interfaccia IEnumerable<T> specificata e che utilizza l'interfaccia IEqualityComparer<T> indicata.
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))
Parametri
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
Oggetto IEnumerable<T> i cui elementi sono copiati nel nuovo oggetto Dictionary<TKey,TValue>.
- comparer
- IEqualityComparer<TKey>
Implementazione di IEqualityComparer<T> da usare per confrontare le chiavi oppure null
per usare l'oggetto EqualityComparer<T> predefinito per il tipo di chiave.
Eccezioni
collection
è null
.
collection
contiene una o più chiavi duplicate.
Si applica a
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Inizializza una nuova istanza vuota della classe Dictionary<TKey,TValue>, con la capacità iniziale predefinita e che usa l'interfaccia IEqualityComparer<T> specificata.
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))
Parametri
- capacity
- Int32
Numero iniziale degli elementi che Dictionary<TKey,TValue> può contenere.
- comparer
- IEqualityComparer<TKey>
Implementazione di IEqualityComparer<T> da usare per confrontare le chiavi oppure null
per usare l'oggetto EqualityComparer<T> predefinito per il tipo di chiave.
Eccezioni
capacity
è minore di 0.
Esempio
Nell'esempio di codice seguente viene creato un oggetto Dictionary<TKey,TValue> con una capacità iniziale di 5 e un comparer di uguaglianza senza distinzione tra maiuscole e minuscole per le impostazioni cultura correnti. Nell'esempio vengono aggiunti quattro elementi, alcuni con chiavi minuscole e alcune con chiavi maiuscole e minuscole. L'esempio tenta quindi di aggiungere un elemento con una chiave diversa da una chiave esistente solo per caso, rileva l'eccezione risultante e visualizza un messaggio di errore. Infine, nell'esempio vengono visualizzati gli elementi nel dizionario.
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
Commenti
Usare questo costruttore con i comparer di stringhe senza distinzione tra maiuscole e minuscole forniti dalla StringComparer classe per creare dizionari con chiavi stringa senza distinzione tra maiuscole e minuscole.
Ogni chiave in un Dictionary<TKey,TValue> deve essere univoca in base al comparer specificato.
La capacità di un Dictionary<TKey,TValue> è il numero di elementi che possono essere aggiunti al Dictionary<TKey,TValue> prima di ridimensionare è necessario. Man mano che gli elementi vengono aggiunti a un Dictionary<TKey,TValue>oggetto , la capacità viene aumentata automaticamente in base alla necessità di riallocare la matrice interna.
Se le dimensioni della raccolta possono essere stimate, specificando la capacità iniziale elimina la necessità di eseguire una serie di operazioni di ridimensionamento durante l'aggiunta di elementi all'oggetto Dictionary<TKey,TValue>.
Dictionary<TKey,TValue> richiede un'implementazione di uguaglianza per determinare se le chiavi sono uguali. Se comparer
è null
, questo costruttore usa il comparer di uguaglianza generico predefinito, EqualityComparer<T>.Default. Se il tipo TKey
implementa l'interfaccia System.IEquatable<T> generica, il comparer di uguaglianza predefinito usa tale implementazione.
Questo costruttore è un'operazione O(1).
Vedi anche
Si applica a
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
- Origine:
- Dictionary.cs
Attenzione
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Inizializza una nuova istanza della classe Dictionary<TKey,TValue> con dati serializzati.
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)
Parametri
- info
- SerializationInfo
Oggetto SerializationInfo contenente le informazioni necessarie per serializzare l'oggetto Dictionary<TKey,TValue>.
- context
- StreamingContext
Struttura StreamingContext contenente l'origine e la destinazione del flusso serializzato associato alla classe Dictionary<TKey,TValue>.
- Attributi
Commenti
Questo costruttore viene chiamato durante la deserializzazione per ricostituire un oggetto trasmesso su un flusso. Per altre informazioni, vedere Serializzazione XML e SOAP.