Trong một số mã kế thừa, tôi đã thấy phương thức mở rộng sau đây để tạo điều kiện thêm một mục giá trị khóa mới hoặc cập nhật giá trị, nếu khóa đã tồn tại.
Phương pháp-1 (mã kế thừa).
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);
}
}
Mặc dù, tôi đã kiểm tra map[key]=value
chính xác công việc đó. Đó là, phương pháp này có thể được thay thế bằng Phương pháp-2 dưới đây.
Phương pháp-2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Bây giờ, câu hỏi của tôi là .. Có thể có bất kỳ vấn đề gì nếu tôi thay thế Phương thức 1 bằng Phương pháp-2 không? Nó sẽ phá vỡ trong bất kỳ kịch bản có thể?
Ngoài ra, tôi nghĩ điều này từng là sự khác biệt giữa HashTable và Dictionary. HashTable cho phép cập nhật một mục hoặc thêm một mục mới bằng cách sử dụng trình chỉ mục trong khi Từ điển thì không !! Sự khác biệt này đã được loại bỏ trong các phiên bản C #> 3.0?
Mục tiêu của phương thức này không phải là ngoại lệ nếu người dùng gửi lại cùng một giá trị khóa, phương thức chỉ cần cập nhật mục nhập với giá trị mới và tạo một mục nhập mới nếu cặp giá trị khóa mới được gửi đến phương thức .