ในบางรหัสเดิมฉันได้เห็นวิธีการต่อไปนี้เพื่ออำนวยความสะดวกในการเพิ่มรายการค่าคีย์ใหม่หรือการปรับปรุงค่าถ้าคีย์มีอยู่แล้ว
วิธีที่ 1 (รหัสดั้งเดิม)
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);
}
}
แม้ว่าฉันได้ตรวจสอบว่าmap[key]=value
ทำหน้าที่เดียวกัน นั่นคือวิธีนี้สามารถแทนที่ด้วยวิธีที่ 2 ด้านล่าง
วิธีที่ 2
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
ตอนนี้คำถามของฉันคือ .. อาจมีปัญหาใด ๆ ถ้าฉันแทนที่ Method-1 โดย Method-2? มันจะแตกในสถานการณ์ที่เป็นไปได้หรือไม่?
นอกจากนี้ฉันคิดว่าสิ่งนี้เคยเป็นความแตกต่างระหว่าง HashTable และพจนานุกรม HashTable อนุญาตให้อัปเดตรายการหรือเพิ่มรายการใหม่โดยใช้ตัวจัดทำดัชนีในขณะที่ Dictionary ไม่ได้ !! ความแตกต่างนี้ถูกกำจัดในรุ่น C #> 3.0 หรือไม่
วัตถุประสงค์ของวิธีนี้ไม่ใช่ข้อยกเว้นหากผู้ใช้ส่งคีย์ - ค่าเดียวกันอีกครั้งวิธีควรอัปเดตรายการด้วยค่าใหม่และเพื่อสร้างรายการใหม่หากคู่คีย์ - ค่าใหม่ถูกส่งไปยังเมธอด .