Bazı eski kodda, anahtar zaten mevcutsa, yeni bir anahtar / değer öğesi eklemeyi veya değeri güncellemeyi kolaylaştırmak için aşağıdaki uzantı yöntemini gördüm.
Yöntem-1 (eski kod).
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);
}
}
Yine de, map[key]=value
aynı işi yaptığını kontrol ettim . Yani, bu yöntem aşağıdaki Yöntem-2 ile değiştirilebilir.
Yöntem-2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Şimdi sorum şu: Yöntem-1'i Yöntem-2 ile değiştirirsem herhangi bir sorun olabilir mi? Olası bir senaryoda kırılacak mı?
Ayrıca, bu eskiden HashTable ve Sözlük arasındaki fark olduğunu düşünüyorum. HashTable, bir öğeyi güncellemeye veya Sözlük yapmıyorken indexer kullanarak yeni bir öğe eklemeye izin verir Bu fark C #> 3.0 sürümlerinde ortadan kaldırıldı mı?
Kullanıcı aynı anahtar / değer çiftini tekrar gönderirse, bu yöntemin amacı çok fazla istisna değildir, yöntem yalnızca girdiyi yeni değerle güncelleştirmeli ve yönteme yeni anahtar / değer çifti gönderildiyse yeni bir giriş yapmalıdır. .