Aracılığıyla paylaş


Dictionary<TKey,TValue> Oluşturucular

Tanım

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 dictionaryiç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 comparernull, 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 dictionaryiçerecek kadar büyük.

Dictionary<TKey,TValue> anahtarların eşit olup olmadığını belirlemek için bir eşitlik uygulaması gerektirir. ise comparernull, 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 comparernull, 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.

Ayrıca bkz.

Şunlara uygulanır