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 dari kelas Dictionary<TKey,TValue>.
Overload
| Nama | Deskripsi |
|---|---|
| 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 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 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
- 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 Dictionary<TKey,TValue> kosong dengan kunci string dan menggunakan Add metode untuk menambahkan beberapa elemen. Contoh menunjukkan bahwa Add metode melempar 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 =
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.
let openWith = 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")
with :? ArgumentException ->
printfn "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.
Nota
Jika Anda dapat memperkirakan ukuran koleksi, menggunakan konstruktor yang menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil 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
- 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 ke SortedDictionary<TKey,TValue>Dictionary<TKey,TValue> meningkatkan 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
*/
open System.Collections.Generic
// Create a new sorted dictionary of strings, with string
// keys.
let openWith = 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.
let copy = Dictionary<string, string> openWith
// List the contents of the copy.
printfn ""
for kvp in copy do
printfn $"Key = {kvp.Key}, Value = {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 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
- 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
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal default, dan menggunakan 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. Contoh 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 menurut 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
*/
open System
open System.Collections.Generic
// Create a new Dictionary of strings, with string keys
// and a case-insensitive comparer for the current culture.
let openWith = 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")
with :? ArgumentException ->
printfn "\nBMP is already in the dictionary."
// List the contents of the sorted dictionary.
printfn ""
for kvp in openWith do
printfn $"Key = {kvp.Key}, Value = {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.
Nota
Jika Anda dapat memperkirakan ukuran koleksi, menggunakan konstruktor yang menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Dictionary<TKey,TValue>.
Konstruktor ini adalah operasi O(1).
Perhatian
Jika capacity berasal dari input pengguna, lebih suka menggunakan konstruktor tanpa parameter kapasitas dan membiarkan pengumpulan mengubah ukuran saat elemen ditambahkan. Jika Anda harus menggunakan nilai yang ditentukan pengguna, klem ke batas yang wajar (misalnya, Math.Clamp(untrustedValue, 0, 20)) atau verifikasi bahwa jumlah elemen cocok dengan nilai yang ditentukan.
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(Int32)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- 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
*/
open System.Collections.Generic
// Create a new dictionary of strings, with string keys and
// an initial capacity of 4.
let openWith = 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.
printfn ""
for kvp in openWith do
printfn $"Key = {kvp.Key}, Value = {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).
Perhatian
Jika capacity berasal dari input pengguna, lebih suka menggunakan konstruktor tanpa parameter kapasitas dan membiarkan pengumpulan mengubah ukuran saat elemen ditambahkan. Jika Anda harus menggunakan nilai yang ditentukan pengguna, klem ke batas yang wajar (misalnya, Math.Clamp(untrustedValue, 0, 20)) atau verifikasi bahwa jumlah elemen cocok dengan nilai yang ditentukan.
Lihat juga
Berlaku untuk
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>)
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
- 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 diurutkan tidak peka huruf besar/kecil dari kamus lain. Contoh kode membuat SortedDictionary<TKey,TValue> dengan pembanding yang tidak peka huruf besar/kecil dan mengisinya dengan data dalam urutan acak, lalu meneruskan SortedDictionary<TKey,TValue> ke Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) konstruktor, bersama dengan perbandingan kesetaraan 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 ke SortedDictionary<TKey,TValue>Dictionary<TKey,TValue> meningkatkan kecepatan pengambilan.
Nota
Saat Anda membuat kamus baru dengan pembanding yang tidak peka huruf besar/kecil dan mengisinya dengan entri dari kamus yang menggunakan pembanding 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
*/
open System
open System.Collections.Generic
// Create a new sorted dictionary of strings, with string
// keys and a case-insensitive comparer.
let openWith =
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.
let copy =
Dictionary<string, string>(openWith, StringComparer.CurrentCultureIgnoreCase)
// List the contents of the copy.
printfn ""
for kvp in copy do
printfn $"Key = {kvp.Key}, Value = {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 pembanding yang ditentukan; demikian juga, setiap kunci dalam sumber dictionary juga harus unik sesuai dengan pembanding yang ditentukan.
Nota
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 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
- 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 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
- Sumber:
- Dictionary.cs
- Sumber:
- Dictionary.cs
Menginisialisasi instans Dictionary<TKey,TValue> baru kelas yang kosong, memiliki kapasitas awal yang ditentukan, dan menggunakan 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 dikandung 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. Contoh 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 menurut 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
*/
open System
open System.Collections.Generic
// Create a new dictionary of strings, with string keys, an
// initial capacity of 5, and a case-insensitive equality
// comparer.
let openWith =
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")
with :? ArgumentException ->
printfn "\nBMP is already in the dictionary."
// List the contents of the dictionary.
printfn ""
for kvp in openWith do
printfn $"Key = {kvp.Key}, Value = {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 perbandingan 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
- 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);
[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);
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}")>]
new System.Collections.Generic.Dictionary<'Key, 'Value> : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Generic.Dictionary<'Key, 'Value>
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 membuat serialisasi Dictionary<TKey,TValue>.
- context
- StreamingContext
Struktur StreamingContext 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.