In einigen Legacy-Codes habe ich die folgende Erweiterungsmethode gesehen, um das Hinzufügen eines neuen Schlüsselwertelements oder das Aktualisieren des Werts zu erleichtern, falls der Schlüssel bereits vorhanden ist.
Methode 1 (Legacy-Code).
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);
}
}
Ich habe jedoch überprüft, dass map[key]=value
dies genau den gleichen Job macht. Das heißt, diese Methode könnte durch die unten stehende Methode 2 ersetzt werden.
Methode 2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Nun ist meine Frage .. Könnte es ein Problem geben, wenn ich Methode-1 durch Methode-2 ersetze? Wird es in einem möglichen Szenario brechen?
Ich denke auch, dass dies früher der Unterschied zwischen HashTable und Dictionary war. HashTable ermöglicht das Aktualisieren eines Elements oder das Hinzufügen eines neuen Elements mithilfe des Indexers, während Dictionary dies nicht tut !! Wurde dieser Unterschied in C #> 3.0-Versionen beseitigt?
Das Ziel dieser Methode ist es nicht, eine Ausnahme auszulösen, wenn der Benutzer denselben Schlüsselwert erneut sendet. Die Methode sollte lediglich den Eintrag mit dem neuen Wert aktualisieren und einen neuen Eintrag vornehmen, wenn ein neues Schlüssel-Wert-Paar an die Methode gesendet wurde .
quelle