Dalam beberapa kode lama saya telah melihat metode ekstensi berikut untuk memfasilitasi menambahkan item nilai kunci baru atau memperbarui nilai, jika kunci sudah ada.
Metode-1 (kode warisan).
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
if (map.ContainsKey(key))
{
map[key] = value;
}
else
{
map.Add(key, value);
}
}
Padahal, saya sudah memeriksa yang map[key]=value
melakukan pekerjaan yang persis sama. Artinya, metode ini bisa diganti dengan Metode-2 di bawah ini.
Metode-2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Sekarang, pertanyaan saya adalah .. Mungkinkah ada masalah jika saya mengganti Metode-1 dengan Metode-2? Apakah akan pecah dalam skenario yang memungkinkan?
Juga, saya pikir ini adalah perbedaan antara HashTable dan Kamus. HashTable memungkinkan memperbarui item, atau menambahkan item baru dengan menggunakan pengindeks sementara Kamus tidak !! Apakah perbedaan ini dihilangkan dalam versi C #> 3.0?
Tujuan dari metode ini adalah tidak terlalu melempar pengecualian jika pengguna mengirim kembali nilai kunci yang sama, metode harus memperbarui entri dengan nilai baru, dan untuk membuat entri baru jika pasangan kunci-nilai baru telah dikirim ke metode .
sumber