Kamus (C # atau lainnya) hanyalah sebuah wadah tempat Anda mencari nilai berdasarkan kunci. Dalam banyak bahasa, ini lebih tepat diidentifikasi sebagai Peta dengan implementasi yang paling umum adalah HashMap.
Masalah yang harus dipertimbangkan adalah apa yang terjadi ketika kunci tidak ada. Beberapa bahasa berperilaku dengan mengembalikan null
atau nil
atau nilai setara lainnya. Secara diam-diam menetapkan suatu nilai alih-alih memberi tahu Anda bahwa suatu nilai tidak ada.
Baik atau buruk, perancang perpustakaan C # menghasilkan idiom untuk mengatasi perilaku tersebut. Mereka beralasan bahwa perilaku default untuk mencari nilai yang tidak ada adalah dengan melemparkan pengecualian. Jika Anda ingin menghindari pengecualian, maka Anda dapat menggunakan Try
varian. Ini adalah pendekatan yang sama yang mereka gunakan untuk mem-parsing string ke integer atau objek tanggal / waktu. Intinya, dampaknya seperti ini:
T count = int.Parse("12T45"); // throws exception
if (int.TryParse("12T45", out count))
{
// Does not throw exception
}
Dan itu dibawa ke kamus, yang pengindeks delegasinya ke Get(index)
:
var myvalue = dict["12345"]; // throws exception
myvalue = dict.Get("12345"); // throws exception
if (dict.TryGet("12345", out myvalue))
{
// Does not throw exception
}
Ini hanyalah cara bahasa dirancang.
Haruskah out
variabel tidak disarankan?
C # bukan bahasa pertama yang memilikinya, dan mereka memiliki tujuan mereka dalam situasi tertentu. Jika Anda mencoba membangun sistem yang sangat konkuren, maka Anda tidak bisa menggunakan out
variabel di batas konkurensi.
Dalam banyak hal, jika ada idiom yang didukung oleh penyedia perpustakaan bahasa dan inti, saya mencoba untuk mengadopsi idiom-idiom itu di API saya. Itu membuat API terasa lebih konsisten dan betah dalam bahasa itu. Jadi metode yang ditulis dalam Ruby tidak akan terlihat seperti metode yang ditulis dalam C #, C, atau Python. Mereka masing-masing memiliki cara pembuatan kode yang disukai, dan bekerja dengan itu membantu pengguna API Anda mempelajarinya lebih cepat.
Apakah Peta Secara Umum Anti-pola?
Mereka memiliki tujuan mereka, tetapi sering kali mereka mungkin menjadi solusi yang salah untuk tujuan yang Anda miliki. Terutama jika Anda memiliki pemetaan dua arah yang Anda butuhkan. Ada banyak wadah dan cara mengatur data. Ada banyak pendekatan yang dapat Anda gunakan, dan kadang-kadang Anda perlu berpikir sedikit sebelum memilih wadah itu.
Jika Anda memiliki daftar nilai pemetaan dua arah yang sangat singkat, maka Anda mungkin hanya perlu daftar tupel. Atau daftar struct, di mana Anda dapat dengan mudah menemukan kecocokan pertama di kedua sisi pemetaan.
Pikirkan domain masalah, dan pilih alat yang paling tepat untuk pekerjaan itu. Jika tidak ada, maka buatlah.