일부 레거시 코드에서 키가 이미있는 경우 새 키 값 항목을 추가하거나 값을 업데이트하는 데 도움이되는 다음 확장 방법을 보았습니다.
방법 -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과 Dictionary의 차이점이라고 생각합니다. HashTable을 사용하면 Dictionary가 아닌 항목을 업데이트하거나 인덱서를 사용하여 새 항목을 추가 할 수 있습니다 !! 이 차이는 C #> 3.0 버전에서 제거 되었습니까?
사용자가 동일한 키-값을 다시 전송하는 경우이 메소드의 목표는 예외를 던지지 않습니다. 메소드는 새 값으로 항목을 업데이트하고 새 키-값 쌍이 메소드에 전송 된 경우 새 항목을 작성해야합니다. .