Dictionary<TKey,TValue> Oluşturucular
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Dictionary<TKey,TValue> sınıfının yeni bir örneğini başlatır.
Aşırı Yüklemeler
Dictionary<TKey,TValue>() |
Boş olan sınıfın Dictionary<TKey,TValue> yeni bir örneğini başlatır, varsayılan başlangıç kapasitesine sahiptir ve anahtar türü için varsayılan eşitlik karşılaştırıcısını kullanır. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) |
Belirtilen IDictionary<TKey,TValue> öğeden kopyalanan öğeleri içeren sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır ve anahtar türü için varsayılan eşitlik karşılaştırıcısını kullanır. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) |
Belirtilen IEnumerable<T>öğesinden kopyalanan öğeleri içeren sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır. |
Dictionary<TKey,TValue>(IEqualityComparer<TKey>) |
Boş, varsayılan başlangıç kapasitesine Dictionary<TKey,TValue> sahip ve belirtilen IEqualityComparer<T>öğesini kullanan sınıfın yeni bir örneğini başlatır. |
Dictionary<TKey,TValue>(Int32) |
Sınıfın Dictionary<TKey,TValue> boş, belirtilen başlangıç kapasitesine sahip yeni bir örneğini başlatır ve anahtar türü için varsayılan eşitlik karşılaştırıcısını kullanır. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) |
belirtilen öğesinden kopyalanan öğeleri içeren ve belirtilen IDictionary<TKey,TValue>IEqualityComparer<T>öğesini kullanan sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) |
belirtilen öğesinden kopyalanan öğeleri içeren ve belirtilen IEnumerable<T>IEqualityComparer<T>öğesini kullanan sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır. |
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) |
Boş, belirtilen başlangıç kapasitesine Dictionary<TKey,TValue> sahip ve belirtilen IEqualityComparer<T>öğesini kullanan sınıfın yeni bir örneğini başlatır. |
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) |
Geçersiz.
Dictionary<TKey,TValue> sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır. |
Dictionary<TKey,TValue>()
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Boş olan sınıfın Dictionary<TKey,TValue> yeni bir örneğini başlatır, varsayılan başlangıç kapasitesine sahiptir ve anahtar türü için varsayılan eşitlik karşılaştırıcısını kullanır.
public:
Dictionary();
public Dictionary ();
Public Sub New ()
Örnekler
Aşağıdaki kod örneği, dize anahtarlarıyla boş bir Dictionary<TKey,TValue> dize oluşturur ve yöntemini kullanarak Add bazı öğeleri ekler. Örnek, yinelenen bir anahtar eklemeye çalışırken yönteminin bir ArgumentException oluşturduğunu Add gösterir.
Bu kod örneği, sınıfı için Dictionary<TKey,TValue> sağlanan daha büyük bir örneğin parçasıdır.
// 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
Açıklamalar
içindeki Dictionary<TKey,TValue> her anahtar, varsayılan eşitlik karşılaştırıcısına göre benzersiz olmalıdır.
Dictionary<TKey,TValue> anahtarların eşit olup olmadığını belirlemek için bir eşitlik uygulaması gerektirir. Bu oluşturucu varsayılan genel eşitlik karşılaştırıcısını kullanır. EqualityComparer<T>.Default Tür TKey
genel arabirimi uygularsa System.IEquatable<T> , varsayılan eşitlik karşılaştırıcısı bu uygulamayı kullanır. Alternatif olarak, parametre kabul eden bir oluşturucu kullanarak genel arabirimin IEqualityComparer<T> bir comparer
uygulamasını belirtebilirsiniz.
Not
Koleksiyonun boyutunu tahmin edebilirseniz, ilk kapasiteyi belirten bir oluşturucu kullanmak, öğesine öğe eklerken bir dizi yeniden boyutlandırma işlemi gerçekleştirme gereksinimini Dictionary<TKey,TValue>ortadan kaldırır.
Bu oluşturucu bir O(1) işlemidir.
Ayrıca bkz.
Şunlara uygulanır
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Belirtilen IDictionary<TKey,TValue> öğeden kopyalanan öğeleri içeren sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır ve anahtar türü için varsayılan eşitlik karşılaştırıcısını kullanır.
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))
Parametreler
- dictionary
- IDictionary<TKey,TValue>
IDictionary<TKey,TValue> Öğeleri yeni Dictionary<TKey,TValue>öğesine kopyalanan öğesidir.
Özel durumlar
dictionary
, null
değeridir.
dictionary
bir veya daha fazla yinelenen anahtar içerir.
Örnekler
Aşağıdaki kod örneği, başka bir sözlükten sıralanmış içerikle bir Dictionary<TKey,TValue> başlatmak için oluşturucunun Dictionary<TKey,TValue>(IEqualityComparer<TKey>) nasıl kullanılacağını gösterir. Kod örneği bir SortedDictionary<TKey,TValue> oluşturur ve rastgele sırada verilerle doldurur, ardından öğesini oluşturucuya Dictionary<TKey,TValue>(IEqualityComparer<TKey>) geçirerek SortedDictionary<TKey,TValue> sıralanmış bir Dictionary<TKey,TValue> oluşturur. Bu, belirli bir noktada statik hale gelen sıralanmış bir sözlük oluşturmanız gerekiyorsa yararlıdır; 'dan SortedDictionary<TKey,TValue> bir veriye Dictionary<TKey,TValue> veri kopyalamak alma hızını artırır.
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
Açıklamalar
içindeki Dictionary<TKey,TValue> her anahtar varsayılan eşitlik karşılaştırıcısına göre benzersiz olmalıdır; benzer şekilde, kaynaktaki dictionary
her anahtar da varsayılan eşitlik karşılaştırıcısına göre benzersiz olmalıdır.
Yeninin Dictionary<TKey,TValue> ilk kapasitesi içindeki tüm öğeleri dictionary
içerecek kadar büyük.
Dictionary<TKey,TValue> anahtarların eşit olup olmadığını belirlemek için bir eşitlik uygulaması gerektirir. Bu oluşturucu varsayılan genel eşitlik karşılaştırıcısını kullanır. EqualityComparer<T>.Default Tür TKey
genel arabirimi uygularsa System.IEquatable<T> , varsayılan eşitlik karşılaştırıcısı bu uygulamayı kullanır. Alternatif olarak, parametre kabul eden bir oluşturucu kullanarak genel arabirimin IEqualityComparer<T> bir comparer
uygulamasını belirtebilirsiniz.
Bu oluşturucu bir O(n) işlemidir; burada n içindeki dictionary
öğelerin sayısıdır.
Ayrıca bkz.
Şunlara uygulanır
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Belirtilen IEnumerable<T>öğesinden kopyalanan öğeleri içeren sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır.
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)))
Parametreler
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
IEnumerable<T> Öğeleri yeni Dictionary<TKey,TValue>öğesine kopyalanan öğesidir.
Özel durumlar
collection
, null
değeridir.
collection
bir veya daha fazla yinelenen anahtar içerir.
Şunlara uygulanır
Dictionary<TKey,TValue>(IEqualityComparer<TKey>)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Boş, varsayılan başlangıç kapasitesine Dictionary<TKey,TValue> sahip ve belirtilen IEqualityComparer<T>öğesini kullanan sınıfın yeni bir örneğini başlatır.
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))
Parametreler
- comparer
- IEqualityComparer<TKey>
IEqualityComparer<T> Anahtarları karşılaştırırken kullanılacak veya null
anahtarın türü için varsayılan EqualityComparer<T> değerin kullanılacağı uygulama.
Örnekler
Aşağıdaki kod örneği, geçerli kültür için büyük/küçük harfe duyarlı olmayan bir eşitlik karşılaştırıcısı ile bir Dictionary<TKey,TValue> oluşturur. Örnek, bazıları küçük harfli, bazıları büyük harfli anahtarlara sahip dört öğe ekler. Örnek daha sonra mevcut bir anahtardan yalnızca büyük/küçük harfe göre farklılık gösteren bir anahtara sahip bir öğe eklemeyi dener, sonuçta elde edilen özel durumu yakalar ve bir hata iletisi görüntüler. Son olarak, örnekte sözlükteki öğeler görüntülenir.
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
Açıklamalar
Büyük/küçük harfe duyarlı olmayan dize anahtarlarıyla sözlükler oluşturmak için sınıfı tarafından StringComparer sağlanan büyük/küçük harfe duyarlı olmayan dize karşılaştırıcılarıyla bu oluşturucuyu kullanın.
içindeki Dictionary<TKey,TValue> her anahtar, belirtilen karşılaştırıcıya göre benzersiz olmalıdır.
Dictionary<TKey,TValue> anahtarların eşit olup olmadığını belirlemek için bir eşitlik uygulaması gerektirir. ise comparer
null
, bu oluşturucu varsayılan genel eşitlik karşılaştırıcısını EqualityComparer<T>.Defaultkullanır. Tür TKey
genel arabirimi uygularsa System.IEquatable<T> , varsayılan eşitlik karşılaştırıcısı bu uygulamayı kullanır.
Not
Koleksiyonun boyutunu tahmin edebilirseniz, ilk kapasiteyi belirten bir oluşturucu kullanmak, öğesine öğe eklerken bir dizi yeniden boyutlandırma işlemi gerçekleştirme gereksinimini Dictionary<TKey,TValue>ortadan kaldırır.
Bu oluşturucu bir O(1) işlemidir.
Ayrıca bkz.
Şunlara uygulanır
Dictionary<TKey,TValue>(Int32)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Sınıfın Dictionary<TKey,TValue> boş, belirtilen başlangıç kapasitesine sahip yeni bir örneğini başlatır ve anahtar türü için varsayılan eşitlik karşılaştırıcısını kullanır.
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)
Parametreler
- capacity
- Int32
öğesinin içerebileceği ilk öğe Dictionary<TKey,TValue> sayısı.
Özel durumlar
capacity
0'dan küçüktür.
Örnekler
Aşağıdaki kod örneği, ilk kapasitesi 4 olan bir sözlük oluşturur ve bunu 4 girişle doldurur.
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
Açıklamalar
içindeki Dictionary<TKey,TValue> her anahtar, varsayılan eşitlik karşılaştırıcısına göre benzersiz olmalıdır.
'nin Dictionary<TKey,TValue> kapasitesi, yeniden boyutlandırma gerekmeden önce öğesine Dictionary<TKey,TValue> eklenebilecek öğe sayısıdır. öğesine öğeler eklendikçe Dictionary<TKey,TValue>, iç dizi yeniden konumlandırılarak kapasite gerektiği gibi otomatik olarak artırılır.
Koleksiyonun boyutu tahmin edilebilirse, ilk kapasitenin belirtilmesi, öğesine öğe eklerken bir dizi yeniden boyutlandırma işlemi gerçekleştirme gereksinimini Dictionary<TKey,TValue>ortadan kaldırır.
Dictionary<TKey,TValue> anahtarların eşit olup olmadığını belirlemek için bir eşitlik uygulaması gerektirir. Bu oluşturucu varsayılan genel eşitlik karşılaştırıcısını kullanır. EqualityComparer<T>.Default Tür TKey
genel arabirimi uygularsa System.IEquatable<T> , varsayılan eşitlik karşılaştırıcısı bu uygulamayı kullanır. Alternatif olarak, parametre kabul eden bir oluşturucu kullanarak genel arabirimin IEqualityComparer<T> bir comparer
uygulamasını belirtebilirsiniz.
Bu oluşturucu bir O(1) işlemidir.
Ayrıca bkz.
Şunlara uygulanır
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
belirtilen öğesinden kopyalanan öğeleri içeren ve belirtilen IDictionary<TKey,TValue>IEqualityComparer<T>öğesini kullanan sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır.
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))
Parametreler
- dictionary
- IDictionary<TKey,TValue>
IDictionary<TKey,TValue> Öğeleri yeni Dictionary<TKey,TValue>öğesine kopyalanan öğesidir.
- comparer
- IEqualityComparer<TKey>
IEqualityComparer<T> Anahtarları karşılaştırırken kullanılacak veya null
anahtarın türü için varsayılan EqualityComparer<T> değerin kullanılacağı uygulama.
Özel durumlar
dictionary
, null
değeridir.
dictionary
bir veya daha fazla yinelenen anahtar içerir.
Örnekler
Aşağıdaki kod örneği, başka bir Dictionary<TKey,TValue> sözlükten Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) büyük/küçük harfe duyarsız sıralanmış içerikle başlatmak için oluşturucunun nasıl kullanılacağını gösterir. Kod örneği, büyük/küçük harfe duyarlı olmayan bir karşılaştırıcı ile bir SortedDictionary<TKey,TValue> oluşturur ve bunu rastgele sırada verilerle doldurur, ardından oluşturucuya Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) iletir SortedDictionary<TKey,TValue> ve büyük/küçük harfe duyarsız eşitlik karşılaştırıcısı ile birlikte sıralanmış bir Dictionary<TKey,TValue> oluşturur. Bu, belirli bir noktada statik hale gelen sıralanmış bir sözlük oluşturmanız gerekiyorsa yararlıdır; 'dan SortedDictionary<TKey,TValue> bir veriye Dictionary<TKey,TValue> veri kopyalamak alma hızını artırır.
Not
Büyük/küçük harfe duyarlı olmayan bir karşılaştırıcı ile yeni bir sözlük oluşturduğunuzda ve bu sözlüğü büyük/küçük harfe duyarlı bir karşılaştırıcı kullanan bir sözlükteki girişlerle doldurduğunuz zaman, giriş sözlüğünde yalnızca büyük/küçük harfe göre farklılık gösteren anahtarlar varsa bir özel durum oluşur.
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
Açıklamalar
Büyük/küçük harfe duyarlı olmayan dize anahtarlarıyla sözlükler oluşturmak için sınıfı tarafından StringComparer sağlanan büyük/küçük harfe duyarlı olmayan dize karşılaştırıcılarıyla bu oluşturucuyu kullanın.
içindeki Dictionary<TKey,TValue> her anahtar belirtilen karşılaştırıcıya göre benzersiz olmalıdır; benzer şekilde, kaynaktaki dictionary
her anahtar da belirtilen karşılaştırıcıya göre benzersiz olmalıdır.
Not
Örneğin, sınıf tarafından StringComparer sağlanan büyük/küçük harfe duyarsız dize karşılaştırıcılarından biriyse ve dictionary
büyük/küçük harfe duyarlı olmayan bir karşılaştırıcı anahtarı kullanmıyorsa comparer
yinelenen anahtarlar oluşabilir.
Yeninin Dictionary<TKey,TValue> ilk kapasitesi içindeki tüm öğeleri dictionary
içerecek kadar büyük.
Dictionary<TKey,TValue> anahtarların eşit olup olmadığını belirlemek için bir eşitlik uygulaması gerektirir. ise comparer
null
, bu oluşturucu varsayılan genel eşitlik karşılaştırıcısını EqualityComparer<T>.Defaultkullanır. Tür TKey
genel arabirimi uygularsa System.IEquatable<T> , varsayılan eşitlik karşılaştırıcısı bu uygulamayı kullanır.
Bu oluşturucu, içindeki dictionary
öğelerin sayısı olan n
bir O(n
) işlemidir.
Ayrıca bkz.
Şunlara uygulanır
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Belirtilen öğesinden kopyalanan öğeleri içeren ve belirtilen IEnumerable<T>IEqualityComparer<T>öğesini kullanan sınıfının yeni bir örneğini Dictionary<TKey,TValue> başlatır.
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))
Parametreler
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
IEnumerable<T> öğeleri yeni Dictionary<TKey,TValue>öğesine kopyalanır.
- comparer
- IEqualityComparer<TKey>
IEqualityComparer<T> Anahtarları karşılaştırırken kullanılacak veya null
anahtarın türü için varsayılan EqualityComparer<T> değerin kullanılacağı uygulama.
Özel durumlar
collection
, null
değeridir.
collection
bir veya daha fazla yinelenen anahtar içerir.
Şunlara uygulanır
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Sınıfının boş, belirtilen başlangıç kapasitesine sahip ve belirtilen IEqualityComparer<T>öğesini kullanan yeni bir örneğini Dictionary<TKey,TValue> başlatır.
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))
Parametreler
- capacity
- Int32
öğesinin içerebileceği ilk öğe Dictionary<TKey,TValue> sayısı.
- comparer
- IEqualityComparer<TKey>
IEqualityComparer<T> Anahtarları karşılaştırırken kullanılacak veya null
anahtarın türü için varsayılan EqualityComparer<T> değerin kullanılacağı uygulama.
Özel durumlar
capacity
0'dan küçüktür.
Örnekler
Aşağıdaki kod örneği, başlangıç kapasitesi 5 olan bir ve geçerli kültür için büyük/küçük harfe duyarlı olmayan bir eşitlik karşılaştırıcısı oluşturur Dictionary<TKey,TValue> . Örnek, bazıları küçük harfli, bazıları büyük harf anahtarlı dört öğe ekler. Örnek daha sonra yalnızca büyük/küçük harfe göre mevcut anahtardan farklı bir anahtara sahip bir öğe eklemeyi dener, sonuçta elde edilen özel durumu yakalar ve bir hata iletisi görüntüler. Son olarak, örnekte sözlükteki öğeler görüntülenir.
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
Açıklamalar
Büyük/küçük harfe duyarlı olmayan dize anahtarlarıyla sözlükler oluşturmak için sınıfı tarafından StringComparer sağlanan büyük/küçük harfe duyarlı olmayan dize karşılaştırıcılarıyla bu oluşturucuyu kullanın.
içindeki Dictionary<TKey,TValue> her anahtar, belirtilen karşılaştırıcıya göre benzersiz olmalıdır.
' Dictionary<TKey,TValue> nin kapasitesi, yeniden boyutlandırma gerekmeden önce öğesine Dictionary<TKey,TValue> eklenebilecek öğe sayısıdır. öğesine Dictionary<TKey,TValue>öğe eklendikçe, iç dizi yeniden konumlandırılarak kapasite gerektiği gibi otomatik olarak artırılır.
Koleksiyonun boyutu tahmin edilebilirse, ilk kapasitenin belirtilmesi, öğesine öğe eklerken bir dizi yeniden boyutlandırma işlemi gerçekleştirme gereksinimini Dictionary<TKey,TValue>ortadan kaldırır.
Dictionary<TKey,TValue> anahtarların eşit olup olmadığını belirlemek için bir eşitlik uygulaması gerektirir. ise comparer
null
, bu oluşturucu varsayılan genel eşitlik karşılaştırıcısını EqualityComparer<T>.Defaultkullanır. Tür TKey
genel arabirimi uygularsa System.IEquatable<T> , varsayılan eşitlik karşılaştırıcısı bu uygulamayı kullanır.
Bu oluşturucu bir O(1) işlemidir.
Ayrıca bkz.
Şunlara uygulanır
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
- Kaynak:
- Dictionary.cs
Dikkat
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Dictionary<TKey,TValue> sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır.
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)
Parametreler
- info
- SerializationInfo
serileştirmek SerializationInfoDictionary<TKey,TValue>için gereken bilgileri içeren bir nesne.
- context
- StreamingContext
StreamingContext ile ilişkili serileştirilmiş akışın kaynağını ve hedefini Dictionary<TKey,TValue>içeren bir yapı.
- Öznitelikler
Açıklamalar
Bu oluşturucu, bir akış üzerinden iletilen bir nesneyi yeniden oluşturmak için seri durumdan çıkarma sırasında çağrılır. Daha fazla bilgi için bkz. XML ve SOAP Serileştirme.