2009-11-30 7 views
6

두 번째 해시 테이블에 새 키가있는 경우다른 해시 테이블로 해시 테이블을 업데이트 하시겠습니까?

두 번째 해시 테이블에 첫 번째 해시 테이블에 추가해야하는 경우 첫 번째 해시 테이블의 값을 업데이트해야합니다.

+0

우리가 보여줄 수있는 코드가 있습니까? 다시 말해, 무엇을 시도 했습니까? –

+0

그래서 두 개의 해시 테이블을 병합하려고하십니까? –

+0

정확하게 예전의 해시 테이블이 최신 버전입니다. – shahjapan

답변

16
foreach (DictionaryEntry item in second) 
{ 
    first[item.Key] = item.Value; 
} 

필요하다면 이것을 확장 방법으로 롤업 할 수 있습니다 (.NET 3.5 이상을 사용한다고 가정).

Hashtable one = GetHashtableFromSomewhere(); 
Hashtable two = GetAnotherHashtableFromSomewhere(); 

one.UpdateWith(two); 

// ... 

public static class HashtableExtensions 
{ 
    public static void UpdateWith(this Hashtable first, Hashtable second) 
    { 
     foreach (DictionaryEntry item in second) 
     { 
      first[item.Key] = item.Value; 
     } 
    } 
} 
+0

"두 번째 해시 테이블에 새 키가 들어 있으면 1 위에 추가해야합니다."예외가 발생합니다. – ParmesanCodice

+5

@ParmesanCodice : 해당 요구 사항을 정확히 충족합니다. 너는 그것을 시도하고 너 자신을 위해 보지 않는가? MSDN 설명서에서 "Item 속성을 사용하여 Hashtable에없는 키 값을 설정하여 새 요소를 추가 할 수도 있습니다. 그러나 지정된 키가 이미 Hashtable에있는 경우 Item 속성을 설정합니다 이전 값을 덮어 씁니다. " http://msdn.microsoft.com/en-us/library/system.collections.hashtable.item.aspx – LukeH

+0

@ 루케, 나의 사과 나는이 행동을 몰랐다. – ParmesanCodice

0

(사전 기준)이 일부 코드 :

 foreach (KeyValuePair<String, String> pair in hashtable2) 
     { 
      if (hashtable1.ContainsKey(pair.Key)) 
      { 
       hashtable1[pair.Key] = pair.Value; 
      } 
      else 
      { 
       hashtable1.Add(pair.Key, pair.Value); 
      } 
     } 

내가 LINQ를 사용하여 더 우아한 해결책이 확신 (2.0하지만, 나는 코드)).

+0

이것은 컴파일되지 않습니다. 그것은 진짜 C# 또는 의사 코드를 의미합니까? – LukeH

+0

@ 루크 : 고맙습니다. C#에서 코딩을 시작해야합니다 ... – Bobby

+0

괜찮아요.''사전에 제대로 작동하지만'Hashtable '에서는 작동하지 않습니다. – LukeH

관련 문제