Dictionary<TKey,TValue> Konstruktor
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menginisialisasi instans baru kelas Dictionary<TKey,TValue>.
Overload
Dictionary<TKey,TValue>() |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal default, dan menggunakan perbandingan kesetaraan default untuk jenis kunci. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan dan menggunakan perbandingan IDictionary<TKey,TValue> kesetaraan default untuk jenis kunci. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>) |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan IEnumerable<T>. |
Dictionary<TKey,TValue>(IEqualityComparer<TKey>) |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal default, dan menggunakan yang ditentukan IEqualityComparer<T>. |
Dictionary<TKey,TValue>(Int32) |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal yang ditentukan, dan menggunakan perbandingan kesetaraan default untuk jenis kunci. |
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan IDictionary<TKey,TValue> dan menggunakan IEqualityComparer<T>. |
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>) |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan IEnumerable<T> dan menggunakan IEqualityComparer<T>. |
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) |
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal yang ditentukan, dan menggunakan yang ditentukan IEqualityComparer<T>. |
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) |
Kedaluwarsa.
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas dengan data berseri. |
Dictionary<TKey,TValue>()
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal default, dan menggunakan perbandingan kesetaraan default untuk jenis kunci.
public:
Dictionary();
public Dictionary ();
Public Sub New ()
Contoh
Contoh kode berikut membuat string kosong Dictionary<TKey,TValue> dengan kunci string dan menggunakan Add metode untuk menambahkan beberapa elemen. Contoh menunjukkan bahwa Add metode melemparkan ArgumentException saat mencoba menambahkan kunci duplikat.
Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk Dictionary<TKey,TValue> kelas .
// 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
Keterangan
Setiap kunci dalam Dictionary<TKey,TValue> harus unik sesuai dengan perbandingan kesetaraan default.
Dictionary<TKey,TValue> memerlukan implementasi kesetaraan untuk menentukan apakah kunci sama. Konstruktor ini menggunakan perbandingan kesetaraan generik default, EqualityComparer<T>.Default. Jika jenis TKey
mengimplementasikan System.IEquatable<T> antarmuka generik, perbandingan kesetaraan default menggunakan implementasi tersebut. Atau, Anda dapat menentukan implementasi IEqualityComparer<T> antarmuka generik dengan menggunakan konstruktor yang menerima comparer
parameter.
Catatan
Jika Anda dapat memperkirakan ukuran koleksi, menggunakan konstruktor yang menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran saat menambahkan elemen ke Dictionary<TKey,TValue>.
Konstruktor ini adalah operasi O(1).
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan dan menggunakan perbandingan IDictionary<TKey,TValue> kesetaraan default untuk jenis kunci.
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))
Parameter
- dictionary
- IDictionary<TKey,TValue>
Elemen IDictionary<TKey,TValue> yang disalin ke yang baru Dictionary<TKey,TValue>.
Pengecualian
dictionary
adalah null
.
dictionary
berisi satu atau beberapa kunci duplikat.
Contoh
Contoh kode berikut menunjukkan cara menggunakan Dictionary<TKey,TValue>(IEqualityComparer<TKey>) konstruktor untuk menginisialisasi dengan konten yang Dictionary<TKey,TValue> diurutkan dari kamus lain. Contoh kode membuat SortedDictionary<TKey,TValue> dan mengisinya dengan data dalam urutan acak, lalu meneruskan SortedDictionary<TKey,TValue> ke Dictionary<TKey,TValue>(IEqualityComparer<TKey>) konstruktor, membuat Dictionary<TKey,TValue> yang diurutkan. Ini berguna jika Anda perlu membangun kamus yang diurutkan yang pada titik tertentu menjadi statis; menyalin data dari SortedDictionary<TKey,TValue> ke meningkatkan Dictionary<TKey,TValue> kecepatan pengambilan.
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
Keterangan
Setiap kunci dalam Dictionary<TKey,TValue> harus unik sesuai dengan perbandingan kesetaraan default; demikian juga, setiap kunci dalam sumber dictionary
juga harus unik sesuai dengan perbandingan kesetaraan default.
Kapasitas awal yang baru Dictionary<TKey,TValue> cukup besar untuk berisi semua elemen di dictionary
.
Dictionary<TKey,TValue> memerlukan implementasi kesetaraan untuk menentukan apakah kunci sama. Konstruktor ini menggunakan perbandingan kesetaraan generik default, EqualityComparer<T>.Default. Jika jenis TKey
mengimplementasikan System.IEquatable<T> antarmuka generik, perbandingan kesetaraan default menggunakan implementasi tersebut. Atau, Anda dapat menentukan implementasi IEqualityComparer<T> antarmuka generik dengan menggunakan konstruktor yang menerima comparer
parameter.
Konstruktor ini adalah operasi O(n), di mana n adalah jumlah elemen dalam dictionary
.
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan IEnumerable<T>.
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)))
Parameter
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
Elemen IEnumerable<T> yang disalin ke yang baru Dictionary<TKey,TValue>.
Pengecualian
collection
adalah null
.
collection
berisi satu atau beberapa kunci duplikat.
Berlaku untuk
Dictionary<TKey,TValue>(IEqualityComparer<TKey>)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal default, dan menggunakan yang ditentukan 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))
Parameter
- comparer
- IEqualityComparer<TKey>
Implementasi IEqualityComparer<T> yang digunakan saat membandingkan kunci, atau null
menggunakan default EqualityComparer<T> untuk jenis kunci.
Contoh
Contoh kode berikut membuat Dictionary<TKey,TValue> dengan perbandingan kesetaraan yang tidak peka huruf besar/kecil untuk budaya saat ini. Contohnya menambahkan empat elemen, beberapa dengan kunci huruf kecil dan beberapa dengan kunci huruf besar. Contoh kemudian mencoba menambahkan elemen dengan kunci yang berbeda dari kunci yang ada hanya berdasarkan kasus, menangkap pengecualian yang dihasilkan, dan menampilkan pesan kesalahan. Terakhir, contoh menampilkan elemen dalam kamus.
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
Keterangan
Gunakan konstruktor ini dengan pembanding string yang tidak peka huruf besar/kecil yang disediakan oleh StringComparer kelas untuk membuat kamus dengan kunci string yang tidak peka huruf besar/kecil.
Setiap kunci dalam Dictionary<TKey,TValue> harus unik sesuai dengan perbandingan yang ditentukan.
Dictionary<TKey,TValue> memerlukan implementasi kesetaraan untuk menentukan apakah kunci sama. Jika comparer
adalah null
, konstruktor ini menggunakan perbandingan kesetaraan generik default, EqualityComparer<T>.Default. Jika jenis TKey
mengimplementasikan System.IEquatable<T> antarmuka generik, perbandingan kesetaraan default menggunakan implementasi tersebut.
Catatan
Jika Anda dapat memperkirakan ukuran koleksi, menggunakan konstruktor yang menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran saat menambahkan elemen ke Dictionary<TKey,TValue>.
Konstruktor ini adalah operasi O(1).
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(Int32)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal yang ditentukan, dan menggunakan perbandingan kesetaraan default untuk jenis kunci.
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)
Parameter
- capacity
- Int32
Jumlah awal elemen yang dapat dikandung Dictionary<TKey,TValue> .
Pengecualian
capacity
kurang dari 0.
Contoh
Contoh kode berikut membuat kamus dengan kapasitas awal 4 dan mengisinya dengan 4 entri.
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
Keterangan
Setiap kunci dalam Dictionary<TKey,TValue> harus unik sesuai dengan perbandingan kesetaraan default.
Kapasitas adalah Dictionary<TKey,TValue> jumlah elemen yang dapat ditambahkan ke Dictionary<TKey,TValue> sebelum mengubah ukuran diperlukan. Saat elemen ditambahkan ke Dictionary<TKey,TValue>, kapasitas secara otomatis ditingkatkan sesuai kebutuhan dengan merealokasi array internal.
Jika ukuran koleksi dapat diperkirakan, menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Dictionary<TKey,TValue>.
Dictionary<TKey,TValue> memerlukan implementasi kesetaraan untuk menentukan apakah kunci sama. Konstruktor ini menggunakan perbandingan kesetaraan generik default, EqualityComparer<T>.Default. Jika jenis TKey
mengimplementasikan System.IEquatable<T> antarmuka generik, perbandingan kesetaraan default menggunakan implementasi tersebut. Atau, Anda dapat menentukan implementasi IEqualityComparer<T> antarmuka generik dengan menggunakan konstruktor yang menerima comparer
parameter.
Konstruktor ini adalah operasi O(1).
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan IDictionary<TKey,TValue> dan menggunakan 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))
Parameter
- dictionary
- IDictionary<TKey,TValue>
Elemen IDictionary<TKey,TValue> yang disalin ke yang baru Dictionary<TKey,TValue>.
- comparer
- IEqualityComparer<TKey>
Implementasi IEqualityComparer<T> yang digunakan saat membandingkan kunci, atau null
menggunakan default EqualityComparer<T> untuk jenis kunci.
Pengecualian
dictionary
adalah null
.
dictionary
berisi satu atau beberapa kunci duplikat.
Contoh
Contoh kode berikut menunjukkan cara menggunakan Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) konstruktor untuk menginisialisasi Dictionary<TKey,TValue> dengan konten yang tidak peka huruf besar/kecil dari kamus lain. Contoh kode membuat SortedDictionary<TKey,TValue> dengan perbandingan yang tidak peka huruf besar/kecil dan mengisinya dengan data dalam urutan acak, lalu meneruskan SortedDictionary<TKey,TValue> ke konstruktor, bersama dengan perbandingan kesetaraan Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) yang tidak peka huruf besar/kecil, membuat Dictionary<TKey,TValue> yang diurutkan. Ini berguna jika Anda perlu membangun kamus yang diurutkan yang pada titik tertentu menjadi statis; menyalin data dari SortedDictionary<TKey,TValue> ke meningkatkan Dictionary<TKey,TValue> kecepatan pengambilan.
Catatan
Saat Anda membuat kamus baru dengan pembanding yang tidak peka huruf besar/kecil dan mengisinya dengan entri dari kamus yang menggunakan perbandingan peka huruf besar/kecil, seperti dalam contoh ini, pengecualian terjadi jika kamus input memiliki kunci yang hanya berbeda menurut kasus.
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
Keterangan
Gunakan konstruktor ini dengan pembanding string yang tidak peka huruf besar/kecil yang disediakan oleh StringComparer kelas untuk membuat kamus dengan kunci string yang tidak peka huruf besar/kecil.
Setiap kunci dalam Dictionary<TKey,TValue> harus unik sesuai dengan perbandingan yang ditentukan; demikian juga, setiap kunci dalam sumber dictionary
juga harus unik sesuai dengan perbandingan yang ditentukan.
Catatan
Misalnya, kunci duplikat dapat terjadi jika comparer
merupakan salah satu pembanding string yang tidak peka huruf besar/kecil yang disediakan oleh StringComparer kelas dan dictionary
tidak menggunakan kunci pembanding yang tidak peka huruf besar/kecil.
Kapasitas awal yang baru Dictionary<TKey,TValue> cukup besar untuk berisi semua elemen di dictionary
.
Dictionary<TKey,TValue> memerlukan implementasi kesetaraan untuk menentukan apakah kunci sama. Jika comparer
adalah null
, konstruktor ini menggunakan perbandingan kesetaraan generik default, EqualityComparer<T>.Default. Jika jenis TKey
mengimplementasikan System.IEquatable<T> antarmuka generik, perbandingan kesetaraan default menggunakan implementasi tersebut.
Konstruktor ini adalah operasi O(n
), di mana n
adalah jumlah elemen dalam dictionary
.
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>, IEqualityComparer<TKey>)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang berisi elemen yang disalin dari yang ditentukan IEnumerable<T> dan menggunakan yang ditentukan 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))
Parameter
- collection
- IEnumerable<KeyValuePair<TKey,TValue>>
Elemen IEnumerable<T> yang disalin ke yang baru Dictionary<TKey,TValue>.
- comparer
- IEqualityComparer<TKey>
Implementasi IEqualityComparer<T> yang digunakan saat membandingkan kunci, atau null
menggunakan default EqualityComparer<T> untuk jenis kunci.
Pengecualian
collection
adalah null
.
collection
berisi satu atau beberapa kunci duplikat.
Berlaku untuk
Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans baru kelas Dictionary<TKey,TValue> yang kosong, memiliki kapasitas awal yang ditentukan, dan menggunakan yang ditentukan 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))
Parameter
- capacity
- Int32
Jumlah awal elemen yang dapat dimuat Dictionary<TKey,TValue> .
- comparer
- IEqualityComparer<TKey>
Implementasi IEqualityComparer<T> yang digunakan saat membandingkan kunci, atau null
menggunakan default EqualityComparer<T> untuk jenis kunci.
Pengecualian
capacity
kurang dari 0.
Contoh
Contoh kode berikut membuat Dictionary<TKey,TValue> dengan kapasitas awal 5 dan perbandingan kesetaraan yang tidak peka huruf besar/kecil untuk budaya saat ini. Contohnya menambahkan empat elemen, beberapa dengan kunci huruf kecil dan beberapa dengan kunci huruf besar. Contoh kemudian mencoba menambahkan elemen dengan kunci yang berbeda dari kunci yang ada hanya berdasarkan kasus, menangkap pengecualian yang dihasilkan, dan menampilkan pesan kesalahan. Terakhir, contoh menampilkan elemen dalam kamus.
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
Keterangan
Gunakan konstruktor ini dengan pembanding string yang tidak peka huruf besar/kecil yang disediakan oleh StringComparer kelas untuk membuat kamus dengan kunci string yang tidak peka huruf besar/kecil.
Setiap kunci dalam Dictionary<TKey,TValue> harus unik sesuai dengan pembanding yang ditentukan.
Kapasitas adalah Dictionary<TKey,TValue> jumlah elemen yang dapat ditambahkan ke Dictionary<TKey,TValue> sebelum mengubah ukuran diperlukan. Saat elemen ditambahkan ke Dictionary<TKey,TValue>, kapasitas secara otomatis ditingkatkan sesuai kebutuhan dengan merealokasi array internal.
Jika ukuran koleksi dapat diperkirakan, menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Dictionary<TKey,TValue>.
Dictionary<TKey,TValue> memerlukan implementasi kesetaraan untuk menentukan apakah kunci sama. Jika comparer
adalah null
, konstruktor ini menggunakan perbandingan kesetaraan generik default, EqualityComparer<T>.Default. Jika jenis TKey
mengimplementasikan System.IEquatable<T> antarmuka generik, perbandingan kesetaraan default menggunakan implementasi tersebut.
Konstruktor ini adalah operasi O(1).
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Perhatian
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas dengan data berseri.
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)
Parameter
- info
- SerializationInfo
Objek SerializationInfo yang berisi informasi yang diperlukan untuk menserialisasikan Dictionary<TKey,TValue>.
- context
- StreamingContext
StreamingContext Struktur yang berisi sumber dan tujuan aliran berseri yang terkait dengan Dictionary<TKey,TValue>.
- Atribut
Keterangan
Konstruktor ini dipanggil selama deserialisasi untuk menyusun ulang objek yang dikirimkan melalui aliran. Untuk informasi selengkapnya, lihat Serialisasi XML dan SOAP.