Dictionary<TKey,TValue> 생성자

정의

Dictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class.

오버로드

Dictionary<TKey,TValue>()

기본 초기 용량을 갖고 있고 키 형식에 대한 기본 같음 비교자를 사용하는 비어 있는 Dictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the default equality comparer for the key type.

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

지정한 Dictionary<TKey,TValue>에서 복사된 요소를 포함하고 키 형식에 대한 기본 같음 비교자를 사용하는 IDictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the default equality comparer for the key type.

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

기본 초기 용량을 갖고 있고 지정된 Dictionary<TKey,TValue>을 사용하는 비어 있는 IEqualityComparer<T> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IEqualityComparer<T>.

Dictionary<TKey,TValue>(Int32)

지정한 초기 용량을 갖고 있고 키 형식에 대한 기본 같음 비교자를 사용하는 비어 있는 Dictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the default equality comparer for the key type.

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

지정한 Dictionary<TKey,TValue>에서 복사된 요소를 포함하고 지정한 IDictionary<TKey,TValue>을 사용하는 IEqualityComparer<T> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the specified IEqualityComparer<T>.

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

지정된 초기 용량을 갖고 있고 지정된 Dictionary<TKey,TValue>을 사용하는 비어 있는 IEqualityComparer<T> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IEqualityComparer<T>.

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

serialize된 데이터를 사용하여 Dictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data.

Dictionary<TKey,TValue>()

기본 초기 용량을 갖고 있고 키 형식에 대한 기본 같음 비교자를 사용하는 비어 있는 Dictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the default equality comparer for the key type.

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

예제

참고

이 문서의 일부 C# 예제는 Try.NET 인라인 코드 실행기 및 플레이그라운드에서 실행됩니다.Some of the C# examples in this article run in the Try.NET inline code runner and playground. 대화형 창에서 예제를 실행하려면 실행 단추(있는 경우)를 선택합니다.When present, select the Run button to run an example in an interactive window. 코드를 실행하면 실행을 다시 선택하여 코드를 수정하고 수정된 코드를 실행할 수 있습니다.Once you execute the code, you can modify it and run the modified code by selecting Run again. 수정된 코드는 대화형 창에서 실행되거나, 컴파일이 실패하면 대화형 창에 모든 C# 컴파일러 오류 메시지가 표시됩니다.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

다음 코드 예제에서는 문자열 키를 사용 하 여 빈 Dictionary<TKey,TValue> 문자열을 만들고 Add 메서드를 사용 하 여 일부 요소를 추가 합니다.The following code example creates an empty Dictionary<TKey,TValue> of strings with string keys and uses the Add method to add some elements. 이 예제에서는 Add 메서드에서 중복 키를 추가 하려고 할 때 ArgumentException를 throw 하는 방법을 보여 줍니다.The example demonstrates that the Add method throws an ArgumentException when attempting to add a duplicate key.

이 코드 예제는에 대해 제공 된 큰 예제의 일부는 Dictionary<TKey,TValue> 클래스입니다.This code example is part of a larger example provided for the Dictionary<TKey,TValue> class.

// 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>의 모든 키는 기본 같음 비교자에 따라 고유 해야 합니다.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

키가 같은지 여부를 확인 하려면 Dictionary<TKey,TValue>에 같음 구현이 필요 합니다.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. 이 생성자는 EqualityComparer<T>.Default기본 제네릭 같음 비교자를 사용 합니다.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. 형식 TKey에서 System.IEquatable<T> 제네릭 인터페이스를 구현 하는 경우 기본 같음 비교자는 해당 구현을 사용 합니다.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. 또는 comparer 매개 변수를 허용 하는 생성자를 사용 하 여 IEqualityComparer<T> 제네릭 인터페이스의 구현을 지정할 수 있습니다.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

참고

컬렉션의 크기를 예측할 수 있는 경우 초기 용량을 지정 하는 생성자를 사용 하면 Dictionary<TKey,TValue>에 요소를 추가 하는 동안 여러 크기 조정 작업을 수행할 필요가 없습니다.If you can estimate the size of the collection, using a constructor that specifies the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

이 생성자는 o (1) 작업입니다.This constructor is an O(1) operation.

추가 정보

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

지정한 Dictionary<TKey,TValue>에서 복사된 요소를 포함하고 키 형식에 대한 기본 같음 비교자를 사용하는 IDictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the default equality comparer for the key type.

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>입니다.The IDictionary<TKey,TValue> whose elements are copied to the new Dictionary<TKey,TValue>.

예외

dictionarynull인 경우dictionary is null.

dictionary에 중복 키가 하나 이상 포함된 경우dictionary contains one or more duplicate keys.

예제

다음 코드 예제에서는 Dictionary<TKey,TValue>(IEqualityComparer<TKey>) 생성자를 사용 하 여 다른 사전의 정렬 된 콘텐츠로 Dictionary<TKey,TValue>를 초기화 하는 방법을 보여 줍니다.The following code example shows how to use the Dictionary<TKey,TValue>(IEqualityComparer<TKey>) constructor to initialize a Dictionary<TKey,TValue> with sorted content from another dictionary. 이 코드 예제에서는 SortedDictionary<TKey,TValue>을 만들고 임의의 순서로 데이터로 채운 다음 SortedDictionary<TKey,TValue>Dictionary<TKey,TValue>(IEqualityComparer<TKey>) 생성자에 전달 하 여 정렬 된 Dictionary<TKey,TValue>를 만듭니다.The code example creates a SortedDictionary<TKey,TValue> and populates it with data in random order, then passes the SortedDictionary<TKey,TValue> to the Dictionary<TKey,TValue>(IEqualityComparer<TKey>) constructor, creating a Dictionary<TKey,TValue> that is sorted. 이는 특정 시점에서 정적으로 정렬 된 사전을 빌드해야 하는 경우에 유용 합니다. SortedDictionary<TKey,TValue>에서 Dictionary<TKey,TValue>로 데이터를 복사 하면 검색 속도가 향상 됩니다.This is useful if you need to build a sorted dictionary that at some point becomes static; copying the data from a SortedDictionary<TKey,TValue> to a Dictionary<TKey,TValue> improves retrieval speed.

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의 모든 키는 기본 같음 비교자에 따라 고유 해야 합니다.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer; likewise, every key in the source dictionary must also be unique according to the default equality comparer.

Dictionary<TKey,TValue>의 초기 용량은 dictionary의 모든 요소를 포함할 수 있을 만큼 커야 합니다.The initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

키가 같은지 여부를 확인 하려면 Dictionary<TKey,TValue>에 같음 구현이 필요 합니다.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. 이 생성자는 EqualityComparer<T>.Default기본 제네릭 같음 비교자를 사용 합니다.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. 형식 TKey에서 System.IEquatable<T> 제네릭 인터페이스를 구현 하는 경우 기본 같음 비교자는 해당 구현을 사용 합니다.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. 또는 comparer 매개 변수를 허용 하는 생성자를 사용 하 여 IEqualityComparer<T> 제네릭 인터페이스의 구현을 지정할 수 있습니다.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

이 생성자는 O (n) 연산입니다. 여기서 n은 dictionary의 요소 수입니다.This constructor is an O(n) operation, where n is the number of elements in dictionary.

추가 정보

Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<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>>

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

기본 초기 용량을 갖고 있고 지정된 Dictionary<TKey,TValue>을 사용하는 비어 있는 IEqualityComparer<T> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IEqualityComparer<T>.

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> 구현을 지정하거나, 해당 키 형식에 기본 EqualityComparer<T>을 사용하려면 null을 지정합니다.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

예제

다음 코드 예제에서는 현재 문화권에 대 한 대/소문자를 구분 하지 않는 같음 비교자를 사용 하 여 Dictionary<TKey,TValue>를 만듭니다.The following code example creates a Dictionary<TKey,TValue> with a case-insensitive equality comparer for the current culture. 예제 4 개 요소, 소문자 키를 사용 하 여 일부 및 대문자 키를 사용 하 여 일부 추가합니다.The example adds four elements, some with lower-case keys and some with upper-case keys. 그런 경우에만 기존 키에서 다른 키를 가진 요소를 추가 하려고 결과 예외를 catch 하 고 오류 메시지를 표시 합니다.The example then attempts to add an element with a key that differs from an existing key only by case, catches the resulting exception, and displays an error message. 마지막으로,이 예제에서는 사전에 요소를 표시합니다.Finally, the example displays the elements in the dictionary.

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 클래스에서 제공 하는 대/소문자를 구분 하지 않는 문자열 비교자와 함께이 생성자를 사용 하 여 대/소문자를 구분 하지 않는 문자열 키로 사전을 만듭니다.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Dictionary<TKey,TValue>의 모든 키는 지정 된 비교자에 따라 고유 해야 합니다.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

키가 같은지 여부를 확인 하려면 Dictionary<TKey,TValue>에 같음 구현이 필요 합니다.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. comparer null되는 경우이 생성자는 기본 제네릭 같음 비교자 (EqualityComparer<T>.Default)를 사용 합니다.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. 형식 TKey에서 System.IEquatable<T> 제네릭 인터페이스를 구현 하는 경우 기본 같음 비교자는 해당 구현을 사용 합니다.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

참고

컬렉션의 크기를 예측할 수 있는 경우 초기 용량을 지정 하는 생성자를 사용 하면 Dictionary<TKey,TValue>에 요소를 추가 하는 동안 여러 크기 조정 작업을 수행할 필요가 없습니다.If you can estimate the size of the collection, using a constructor that specifies the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

이 생성자는 o (1) 작업입니다.This constructor is an O(1) operation.

추가 정보

Dictionary<TKey,TValue>(Int32)

지정한 초기 용량을 갖고 있고 키 형식에 대한 기본 같음 비교자를 사용하는 비어 있는 Dictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the default equality comparer for the key type.

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>에 포함될 수 있는 초기 요소 수입니다.The initial number of elements that the Dictionary<TKey,TValue> can contain.

예외

capacity가 0보다 작은 경우.capacity is less than 0.

예제

다음 코드 예제에서는 4의 초기 용량을 사용 하 여 사전을 만들고 4 개의 항목으로 채웁니다.The following code example creates a dictionary with an initial capacity of 4 and populates it with 4 entries.

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>의 모든 키는 기본 같음 비교자에 따라 고유 해야 합니다.Every key in a Dictionary<TKey,TValue> must be unique according to the default equality comparer.

Dictionary<TKey,TValue> 용량은 크기를 조정 해야 하기 전에 Dictionary<TKey,TValue>에 추가할 수 있는 요소의 수입니다.The capacity of a Dictionary<TKey,TValue> is the number of elements that can be added to the Dictionary<TKey,TValue> before resizing is necessary. 요소가 Dictionary<TKey,TValue>에 추가 되 면 내부 배열을 다시 할당 하 여 필요에 따라 용량이 자동으로 증가 합니다.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

컬렉션의 크기를 예상할 수 있는 경우 초기 용량을 지정 하면 Dictionary<TKey,TValue>에 요소를 추가 하는 동안 여러 크기 조정 작업을 수행할 필요가 없습니다.If the size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

키가 같은지 여부를 확인 하려면 Dictionary<TKey,TValue>에 같음 구현이 필요 합니다.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. 이 생성자는 EqualityComparer<T>.Default기본 제네릭 같음 비교자를 사용 합니다.This constructor uses the default generic equality comparer, EqualityComparer<T>.Default. 형식 TKey에서 System.IEquatable<T> 제네릭 인터페이스를 구현 하는 경우 기본 같음 비교자는 해당 구현을 사용 합니다.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation. 또는 comparer 매개 변수를 허용 하는 생성자를 사용 하 여 IEqualityComparer<T> 제네릭 인터페이스의 구현을 지정할 수 있습니다.Alternatively, you can specify an implementation of the IEqualityComparer<T> generic interface by using a constructor that accepts a comparer parameter.

이 생성자는 o (1) 작업입니다.This constructor is an O(1) operation.

추가 정보

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

지정한 Dictionary<TKey,TValue>에서 복사된 요소를 포함하고 지정한 IDictionary<TKey,TValue>을 사용하는 IEqualityComparer<T> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the specified 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);
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>입니다.The IDictionary<TKey,TValue> whose elements are copied to the new Dictionary<TKey,TValue>.

comparer
IEqualityComparer<TKey>

키를 비교할 때 사용할 IEqualityComparer<T> 구현을 지정하거나, 해당 키 형식에 기본 EqualityComparer<T>을 사용하려면 null을 지정합니다.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

예외

dictionarynull인 경우dictionary is null.

dictionary에 중복 키가 하나 이상 포함된 경우dictionary contains one or more duplicate keys.

예제

다음 코드 예제에서는 Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) 생성자를 사용 하 여 다른 사전에서 대/소문자를 구분 하지 않는 정렬 된 콘텐츠를 사용 하 여 Dictionary<TKey,TValue>를 초기화 하는 방법을 보여 줍니다.The following code example shows how to use the Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) constructor to initialize a Dictionary<TKey,TValue> with case-insensitive sorted content from another dictionary. 코드 예제에서는 대/소문자를 구분 하지 않는 비교자를 사용 하 여 SortedDictionary<TKey,TValue>를 만들고 임의의 순서로 데이터로 채운 다음 대/소문자를 구분 하지 않는 같음 비교자와 함께 SortedDictionary<TKey,TValue>Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) 생성자에 전달 하 여 정렬 된 Dictionary<TKey,TValue>를 만듭니다.The code example creates a SortedDictionary<TKey,TValue> with a case-insensitive comparer and populates it with data in random order, then passes the SortedDictionary<TKey,TValue> to the Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) constructor, along with a case-insensitive equality comparer, creating a Dictionary<TKey,TValue> that is sorted. 이는 특정 시점에서 정적으로 정렬 된 사전을 빌드해야 하는 경우에 유용 합니다. SortedDictionary<TKey,TValue>에서 Dictionary<TKey,TValue>로 데이터를 복사 하면 검색 속도가 향상 됩니다.This is useful if you need to build a sorted dictionary that at some point becomes static; copying the data from a SortedDictionary<TKey,TValue> to a Dictionary<TKey,TValue> improves retrieval speed.

참고

새 사전입니다. 대/소문자 구분 비교자를 사용 하 여 만들고이 예에서 같이 대/소문자 구분 비교자를 사용 하는 사전에서 항목으로 채울 때 입력된 사전에 키를 대/소문자만 다른 경우 예외가 발생 합니다.When you create a new dictionary with a case-insensitive comparer and populate it with entries from a dictionary that uses a case-sensitive comparer, as in this example, an exception occurs if the input dictionary has keys that differ only by case.

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 클래스에서 제공 하는 대/소문자를 구분 하지 않는 문자열 비교자와 함께이 생성자를 사용 하 여 대/소문자를 구분 하지 않는 문자열 키로 사전을 만듭니다.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Dictionary<TKey,TValue>의 모든 키는 지정 된 비교자에 따라 고유 해야 합니다. 마찬가지로, 소스 dictionary의 모든 키도 지정 된 비교자에 따라 고유 해야 합니다.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer; likewise, every key in the source dictionary must also be unique according to the specified comparer.

참고

예를 들어 comparer StringComparer 클래스에서 제공 하는 대/소문자를 구분 하지 않는 문자열 비교자 중 하나이 고 dictionary 대/소문자를 구분 하지 않는 비교자 키를 사용 하지 않는 경우 중복 키가 발생할 수 있습니다.For example, duplicate keys can occur if comparer is one of the case-insensitive string comparers provided by the StringComparer class and dictionary does not use a case-insensitive comparer key.

Dictionary<TKey,TValue>의 초기 용량은 dictionary의 모든 요소를 포함할 수 있을 만큼 커야 합니다.The initial capacity of the new Dictionary<TKey,TValue> is large enough to contain all the elements in dictionary.

키가 같은지 여부를 확인 하려면 Dictionary<TKey,TValue>에 같음 구현이 필요 합니다.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. comparer null되는 경우이 생성자는 기본 제네릭 같음 비교자 (EqualityComparer<T>.Default)를 사용 합니다.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. 형식 TKey에서 System.IEquatable<T> 제네릭 인터페이스를 구현 하는 경우 기본 같음 비교자는 해당 구현을 사용 합니다.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

이 생성자는 O (n) 작업으로, ndictionary의 요소 수입니다.This constructor is an O(n) operation, where n is the number of elements in dictionary.

추가 정보

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

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>>
comparer
IEqualityComparer<TKey>

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

지정된 초기 용량을 갖고 있고 지정된 Dictionary<TKey,TValue>을 사용하는 비어 있는 IEqualityComparer<T> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IEqualityComparer<T>.

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>에 포함될 수 있는 초기 요소 수입니다.The initial number of elements that the Dictionary<TKey,TValue> can contain.

comparer
IEqualityComparer<TKey>

키를 비교할 때 사용할 IEqualityComparer<T> 구현을 지정하거나, 해당 키 형식에 기본 EqualityComparer<T>을 사용하려면 null을 지정합니다.The IEqualityComparer<T> implementation to use when comparing keys, or null to use the default EqualityComparer<T> for the type of the key.

예외

capacity가 0보다 작은 경우.capacity is less than 0.

예제

다음 코드 예제에서는 초기 용량이 5이 고 현재 문화권에 대 한 대/소문자를 구분 하지 않는 같음 비교자를 사용 하 여 Dictionary<TKey,TValue>를 만듭니다.The following code example creates a Dictionary<TKey,TValue> with an initial capacity of 5 and a case-insensitive equality comparer for the current culture. 예제 4 개 요소, 소문자 키를 사용 하 여 일부 및 대문자 키를 사용 하 여 일부 추가합니다.The example adds four elements, some with lower-case keys and some with upper-case keys. 그런 경우에만 기존 키에서 다른 키를 가진 요소를 추가 하려고 결과 예외를 catch 하 고 오류 메시지를 표시 합니다.The example then attempts to add an element with a key that differs from an existing key only by case, catches the resulting exception, and displays an error message. 마지막으로,이 예제에서는 사전에 요소를 표시합니다.Finally, the example displays the elements in the dictionary.

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 클래스에서 제공 하는 대/소문자를 구분 하지 않는 문자열 비교자와 함께이 생성자를 사용 하 여 대/소문자를 구분 하지 않는 문자열 키로 사전을 만듭니다.Use this constructor with the case-insensitive string comparers provided by the StringComparer class to create dictionaries with case-insensitive string keys.

Dictionary<TKey,TValue>의 모든 키는 지정 된 비교자에 따라 고유 해야 합니다.Every key in a Dictionary<TKey,TValue> must be unique according to the specified comparer.

Dictionary<TKey,TValue> 용량은 크기를 조정 해야 하기 전에 Dictionary<TKey,TValue>에 추가할 수 있는 요소의 수입니다.The capacity of a Dictionary<TKey,TValue> is the number of elements that can be added to the Dictionary<TKey,TValue> before resizing is necessary. 요소가 Dictionary<TKey,TValue>에 추가 되 면 내부 배열을 다시 할당 하 여 필요에 따라 용량이 자동으로 증가 합니다.As elements are added to a Dictionary<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

컬렉션의 크기를 예상할 수 있는 경우 초기 용량을 지정 하면 Dictionary<TKey,TValue>에 요소를 추가 하는 동안 여러 크기 조정 작업을 수행할 필요가 없습니다.If the size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Dictionary<TKey,TValue>.

키가 같은지 여부를 확인 하려면 Dictionary<TKey,TValue>에 같음 구현이 필요 합니다.Dictionary<TKey,TValue> requires an equality implementation to determine whether keys are equal. comparer null되는 경우이 생성자는 기본 제네릭 같음 비교자 (EqualityComparer<T>.Default)를 사용 합니다.If comparer is null, this constructor uses the default generic equality comparer, EqualityComparer<T>.Default. 형식 TKey에서 System.IEquatable<T> 제네릭 인터페이스를 구현 하는 경우 기본 같음 비교자는 해당 구현을 사용 합니다.If type TKey implements the System.IEquatable<T> generic interface, the default equality comparer uses that implementation.

이 생성자는 o (1) 작업입니다.This constructor is an O(1) operation.

추가 정보

Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)

serialize된 데이터를 사용하여 Dictionary<TKey,TValue> 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data.

protected:
 Dictionary(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
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>
Protected Sub New (info As SerializationInfo, context As StreamingContext)

매개 변수

info
SerializationInfo

SerializationInfo를 serialize하는 데 필요한 정보가 포함된 Dictionary<TKey,TValue> 개체입니다.A SerializationInfo object containing the information required to serialize the Dictionary<TKey,TValue>.

context
StreamingContext

StreamingContext와 관련된 serialize된 스트림의 소스와 대상이 들어 있는 Dictionary<TKey,TValue> 구조체입니다.A StreamingContext structure containing the source and destination of the serialized stream associated with the Dictionary<TKey,TValue>.

설명

이 생성자는 스트림을 통해 전송 하는 개체를 다시 구성 하기 위해 역직렬화 하는 동안 호출 됩니다.This constructor is called during deserialization to reconstitute an object transmitted over a stream. 자세한 내용은 XML 및 SOAP Serialization합니다.For more information, see XML and SOAP Serialization.

추가 정보

적용 대상