Dictionary<TKey,TValue> コンストラクター

定義

Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

オーバーロード

Dictionary<TKey,TValue>()

空で、既定の初期量を備え、キーの型の既定の等値比較子を使用する、Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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

指定した Dictionary<TKey,TValue> から要素をコピーして格納し、キーの型の既定の等値比較子を使用する、IDictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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

指定した IEnumerable<T> からコピーされた要素を格納する Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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

空で、既定の初期量を備え、指定した Dictionary<TKey,TValue> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

Dictionary<TKey,TValue>(Int32)

空で、指定した初期量を備え、キーの型の既定の等値比較子を使用する、Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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

指定した Dictionary<TKey,TValue> から要素をコピーして格納し、指定した IDictionary<TKey,TValue> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

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

指定した Dictionary<TKey,TValue> から要素をコピーして格納し、指定した IEnumerable<T> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

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

空で、指定した初期量を備え、指定した Dictionary<TKey,TValue> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
古い.

シリアル化したデータを使用して、Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

Dictionary<TKey,TValue>()

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

空で、既定の初期量を備え、キーの型の既定の等値比較子を使用する、Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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

次のコード例では、文字列キーを Dictionary<TKey,TValue> 含む空の文字列を作成し、 メソッドを Add 使用していくつかの要素を追加します。 この例では、重複するキーを Add 追加しようとしたときに メソッドが を ArgumentException スローすることを示します。

このコード例は、Dictionary<TKey,TValue> クラスのために提供されている大規模な例の一部です。

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

注釈

内のすべてのキーは Dictionary<TKey,TValue> 、既定の等値比較子に従って一意である必要があります。

Dictionary<TKey,TValue> キーが等しいかどうかを判断するには、等値実装が必要です。 このコンストラクターでは、 EqualityComparer<T>.Default既定のジェネリック等値比較子 を使用します。 type TKey がジェネリック インターフェイスを実装する System.IEquatable<T> 場合、既定の等値比較子はその実装を使用します。 または、パラメーターを受け取るコンストラクターを IEqualityComparer<T> 使用して、ジェネリック インターフェイスの実装を comparer 指定することもできます。

注意

コレクションのサイズを見積もることができる場合は、初期容量を指定するコンストラクターを使用すると、 に要素を追加しながら、多数のサイズ変更操作を実行する Dictionary<TKey,TValue>必要がなくなります。

このコンストラクターは O(1) 操作です。

こちらもご覧ください

適用対象

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

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

指定した Dictionary<TKey,TValue> から要素をコピーして格納し、キーの型の既定の等値比較子を使用する、IDictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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

パラメーター

dictionary
IDictionary<TKey,TValue>

新しい IDictionary<TKey,TValue> に要素がコピーされた Dictionary<TKey,TValue>

例外

dictionarynullです。

dictionary には 1 つまたは複数の重複するキーが含まれます。

次のコード例は、 コンストラクターを使用して、別の Dictionary<TKey,TValue>(IEqualityComparer<TKey>) ディクショナリから並べ替えられたコンテンツを使用して を Dictionary<TKey,TValue> 初期化する方法を示しています。 コード例では、 をSortedDictionary<TKey,TValue>作成し、ランダムな順序でデータを設定し、 をコンストラクターにDictionary<TKey,TValue>(IEqualityComparer<TKey>)SortedDictionary<TKey,TValue>して、並べ替えられた をDictionary<TKey,TValue>作成します。 これは、ある時点で静的になる並べ替えられた辞書を作成する必要がある場合に便利です。から にデータ SortedDictionary<TKey,TValue> をコピーすると、 Dictionary<TKey,TValue> 取得速度が向上します。

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

注釈

Dictionary<TKey,TValue> のすべてのキーは、既定の等値比較子に従って一意である必要があります。同様に、ソース dictionary 内のすべてのキーも、既定の等値比較子に従って一意である必要があります。

新しい Dictionary<TKey,TValue> の初期容量は、 内のすべての要素 dictionaryを格納するのに十分な大きさです。

Dictionary<TKey,TValue> キーが等しいかどうかを判断するには、等値実装が必要です。 このコンストラクターでは、 EqualityComparer<T>.Default既定のジェネリック等値比較子 を使用します。 type TKey がジェネリック インターフェイスを実装する System.IEquatable<T> 場合、既定の等値比較子はその実装を使用します。 または、パラメーターを受け取るコンストラクターを IEqualityComparer<T> 使用して、ジェネリック インターフェイスの実装を comparer 指定することもできます。

このコンストラクターは O(n) 操作です。ここで、n は 内 dictionaryの要素の数です。

こちらもご覧ください

適用対象

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

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

指定した IEnumerable<T> からコピーされた要素を格納する Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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

パラメーター

collection
IEnumerable<KeyValuePair<TKey,TValue>>

新しい IEnumerable<T> に要素がコピーされた Dictionary<TKey,TValue>

例外

collectionnullです。

collection には 1 つ以上の重複するキーが含まれています。

適用対象

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

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

空で、既定の初期量を備え、指定した Dictionary<TKey,TValue> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

public:
 Dictionary(System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (System.Collections.Generic.IEqualityComparer<TKey> comparer);
public Dictionary (System.Collections.Generic.IEqualityComparer<TKey>? comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (comparer As IEqualityComparer(Of TKey))

パラメーター

comparer
IEqualityComparer<TKey>

キーの比較時に使用する IEqualityComparer<T> 実装。キーの型の既定の null を使用する場合は EqualityComparer<T>

次のコード例では、現在のカルチャの大文字と小文字を区別しない等値比較子を使用して を作成 Dictionary<TKey,TValue> します。 この例では、小文字のキーを持つ要素と大文字のキーを持つ要素の 4 つを追加します。 その後、この例では、ケースによってのみ既存のキーと異なるキーを持つ要素の追加を試み、結果の例外をキャッチし、エラー メッセージを表示します。 最後に、辞書の要素を表示します。

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

注釈

クラスによって提供される大文字と小文字を区別しない文字列比較子と共にこのコンストラクターを StringComparer 使用して、大文字と小文字を区別しない文字列キーを含むディクショナリを作成します。

内のすべてのキーは Dictionary<TKey,TValue> 、指定された比較子に従って一意である必要があります。

Dictionary<TKey,TValue> キーが等しいかどうかを判断するには、等値実装が必要です。 が の場合comparer、このコンストラクターは既定のジェネリック等値比較子 EqualityComparer<T>.Defaultを使用nullします。 type TKey がジェネリック インターフェイスを実装する System.IEquatable<T> 場合、既定の等値比較子はその実装を使用します。

注意

コレクションのサイズを見積もることができる場合は、初期容量を指定するコンストラクターを使用すると、 に要素を追加しながら、多数のサイズ変更操作を実行する Dictionary<TKey,TValue>必要がなくなります。

このコンストラクターは O(1) 操作です。

こちらもご覧ください

適用対象

Dictionary<TKey,TValue>(Int32)

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

空で、指定した初期量を備え、キーの型の既定の等値比較子を使用する、Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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)

パラメーター

capacity
Int32

Dictionary<TKey,TValue> が格納できる要素数の初期値。

例外

capacity が 0 未満です。

次のコード例では、初期容量が 4 のディクショナリを作成し、4 つのエントリを設定します。

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

注釈

内のすべてのキーは Dictionary<TKey,TValue> 、既定の等値比較子に従って一意である必要があります。

Dictionary<TKey,TValue> 容量は、サイズ変更が必要になる前に に Dictionary<TKey,TValue> 追加できる要素の数です。 要素が に Dictionary<TKey,TValue>追加されると、内部配列を再割り当てすることで、必要に応じて容量が自動的に増加します。

コレクションのサイズを見積もることができる場合、初期容量を指定すると、 に要素を追加しながら、多数のサイズ変更操作を実行する Dictionary<TKey,TValue>必要がなくなります。

Dictionary<TKey,TValue> キーが等しいかどうかを判断するには、等値実装が必要です。 このコンストラクターでは、 EqualityComparer<T>.Default既定のジェネリック等値比較子 を使用します。 type TKey がジェネリック インターフェイスを実装する System.IEquatable<T> 場合、既定の等値比較子はその実装を使用します。 または、パラメーターを受け取るコンストラクターを IEqualityComparer<T> 使用して、ジェネリック インターフェイスの実装を comparer 指定することもできます。

このコンストラクターは O(1) 操作です。

こちらもご覧ください

適用対象

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

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

指定した Dictionary<TKey,TValue> から要素をコピーして格納し、指定した IDictionary<TKey,TValue> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

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

パラメーター

dictionary
IDictionary<TKey,TValue>

新しい IDictionary<TKey,TValue> に要素がコピーされた Dictionary<TKey,TValue>

comparer
IEqualityComparer<TKey>

キーの比較時に使用する IEqualityComparer<T> 実装。キーの型の既定の null を使用する場合は EqualityComparer<T>

例外

dictionarynullです。

dictionary には 1 つまたは複数の重複するキーが含まれます。

次のコード例は、 コンストラクターを使用して、別の Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) ディクショナリから大文字と小文字を Dictionary<TKey,TValue> 区別しない並べ替えられたコンテンツを初期化する方法を示しています。 このコード例では、大文字と小文字を区別しない比較子を使用して をSortedDictionary<TKey,TValue>作成し、それをランダムな順序でデータに設定し、 をコンストラクターにDictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)SortedDictionary<TKey,TValue>し、大文字と小文字を区別しない等値比較子と共に、並べ替えられた をDictionary<TKey,TValue>作成します。 これは、ある時点で静的になる並べ替えられた辞書を作成する必要がある場合に便利です。から にデータ SortedDictionary<TKey,TValue> をコピーすると、 Dictionary<TKey,TValue> 取得速度が向上します。

注意

大文字と小文字を区別しない比較子を使用して新しいディクショナリを作成し、大文字と小文字を区別する比較子を使用するディクショナリのエントリを入力すると、入力ディクショナリに大文字と小文字のみが異なるキーがある場合は例外が発生します。

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

注釈

クラスによって提供される大文字と小文字を区別しない文字列比較子と共にこのコンストラクターを StringComparer 使用して、大文字と小文字を区別しない文字列キーを含むディクショナリを作成します。

Dictionary<TKey,TValue> のすべてのキーは、指定された比較子に従って一意である必要があります。同様に、ソース dictionary 内のすべてのキーも、指定された比較子に従って一意である必要があります。

注意

たとえば、 が クラスによって提供される大文字と小文字を区別しない文字列比較子の 1 つでStringComparer、大文字とdictionary小文字を区別しない比較子キーを使用していない場合、重複するキーが発生する可能性comparerがあります。

新しい Dictionary<TKey,TValue> の初期容量は、 内のすべての要素 dictionaryを格納するのに十分な大きさです。

Dictionary<TKey,TValue> キーが等しいかどうかを判断するには、等値実装が必要です。 が の場合comparer、このコンストラクターは既定のジェネリック等値比較子 EqualityComparer<T>.Defaultを使用nullします。 type TKey がジェネリック インターフェイスを実装する System.IEquatable<T> 場合、既定の等値比較子はその実装を使用します。

このコンストラクターは O(n) 操作です。ここで n 、 は 内 dictionaryの要素の数です。

こちらもご覧ください

適用対象

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

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

指定した Dictionary<TKey,TValue> から要素をコピーして格納し、指定した IEnumerable<T> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

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

パラメーター

collection
IEnumerable<KeyValuePair<TKey,TValue>>

新しい IEnumerable<T> に要素がコピーされた Dictionary<TKey,TValue>

comparer
IEqualityComparer<TKey>

キーの比較時に使用する IEqualityComparer<T> 実装。キーの型の既定の null を使用する場合は EqualityComparer<T>

例外

collectionnullです。

collection には 1 つ以上の重複するキーが含まれています。

適用対象

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

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

空で、指定した初期量を備え、指定した Dictionary<TKey,TValue> を使用する、IEqualityComparer<T> クラスの新しいインスタンスを初期化します。

public:
 Dictionary(int capacity, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public Dictionary (int capacity, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public Dictionary (int capacity, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
new System.Collections.Generic.Dictionary<'Key, 'Value> : int * System.Collections.Generic.IEqualityComparer<'Key> -> System.Collections.Generic.Dictionary<'Key, 'Value>
Public Sub New (capacity As Integer, comparer As IEqualityComparer(Of TKey))

パラメーター

capacity
Int32

Dictionary<TKey,TValue> が格納できる要素数の初期値。

comparer
IEqualityComparer<TKey>

キーの比較時に使用する IEqualityComparer<T> 実装。キーの型の既定の null を使用する場合は EqualityComparer<T>

例外

capacity が 0 未満です。

次のコード例では、初期容量が 5 の を作成し、現在のカルチャの大文字と小文字を区別しない等値比較子を作成 Dictionary<TKey,TValue> します。 この例では、4 つの要素を追加します。一部は小文字のキーを持ち、一部は大文字のキーを使用します。 次に、既存のキーと異なるキーを持つ要素をケースによってのみ追加し、結果の例外をキャッチし、エラー メッセージを表示します。 最後に、ディクショナリ内の要素を表示します。

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

注釈

クラスによって提供される大文字と小文字を区別しない文字列比較子と共にこのコンストラクターを StringComparer 使用して、大文字と小文字を区別しない文字列キーを含むディクショナリを作成します。

Dictionary<TKey,TValue> のすべてのキーは、指定された比較子に従って一意である必要があります。

Dictionary<TKey,TValue> 容量は、サイズ変更が必要になる前に に Dictionary<TKey,TValue> 追加できる要素の数です。 要素が に Dictionary<TKey,TValue>追加されると、内部配列を再割り当てすることで、必要に応じて容量が自動的に増加します。

コレクションのサイズを見積もることができる場合、初期容量を指定すると、 に要素を追加するときに、多くのサイズ変更操作を実行する Dictionary<TKey,TValue>必要がなくなります。

Dictionary<TKey,TValue> キーが等しいかどうかを判断するには、等価実装が必要です。 が nullの場合comparer、このコンストラクターは既定のジェネリック等価比較子 EqualityComparer<T>.Defaultを使用します。 type TKey がジェネリック インターフェイスを実装している System.IEquatable<T> 場合、既定の等値比較子はその実装を使用します。

このコンストラクターは O(1) 操作です。

こちらもご覧ください

適用対象

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

ソース:
Dictionary.cs
ソース:
Dictionary.cs
ソース:
Dictionary.cs

注意事項

This API supports obsolete formatter-based serialization. It should not be called or extended by application code.

シリアル化したデータを使用して、Dictionary<TKey,TValue> クラスの新しいインスタンスを初期化します。

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)

パラメーター

info
SerializationInfo

SerializationInfo をシリアル化するために必要な情報を格納している Dictionary<TKey,TValue> オブジェクト。

context
StreamingContext

StreamingContext に関連付けられているシリアル化ストリームのソースおよびデスティネーションを格納している Dictionary<TKey,TValue> 構造体。

属性

注釈

このコンストラクターは、ストリーム経由で送信されるオブジェクトを再構成するために、逆シリアル化中に呼び出されます。 詳細については、「 XML および SOAP のシリアル化」を参照してください。

こちらもご覧ください

適用対象