2011-04-08 7 views

답변

19

강력 타입이므로 일반 Dictionary을 사용하는 것이 좋습니다. 반면 Hashtable은 그렇지 않습니다. 이 시도 :

NameValueCollection col = new NameValueCollection(); 
col.Add("red", "rouge"); 
col.Add("green", "verde"); 
col.Add("blue", "azul"); 

var dict = col.AllKeys 
       .ToDictionary(k => k, k => col[k]); 

편집 : 귀하의 의견을 바탕으로, 당신은 여전히 ​​위의 방법을 사용하고 한 번 더 라인을 추가 할 수있는 해시를 얻을 수 있습니다. 한 줄에 항상이 작업을 할 수 있지만 두 줄을 더 읽기 쉽습니다.

Hashtable hashTable = new Hashtable(dict); 

또는, 될 루프를 사용하여 pre-.NET 3.5 방법 :

Hashtable hashTable = new Hashtable(); 
foreach (string key in col) 
{ 
    hashTable.Add(key, col[key]); 
} 
+0

문제는 내가'Hashtable'을 기대하는 API를 사용하고있어서'Dictionary'를 사용하는 것이 옵션이 아니라는 것입니다 ... – MarioVW

+0

@MarioVW는 내 업데이트를 봅니다. –

+0

여기에 캐치가 있습니다. NameValueCollection은 중복 키를 허용합니다. 이 경우 모든 값은 HashTable의 동일한 키에 삽입됩니다. 고유 키당 하나의 항목 만 있습니다. 예 : "red"키가 "rouge"및 "verde"값에 대해 두 번 나열되면 해시 키 "red"에 대해 두 값이 단일 키로 나열됩니다. – Priyank

1

이 한 줄 이상을 소요하지만 그것은 컴파일하고 실행하는

NameValueCollection nv = new NameValueCollection(); 
Hashtable hashTable = new Hashtable(); 

nv.Add("test", "test"); 

foreach (string key in nv.Keys) 
{ 
    hashTable.Add(key, nv[key]); 
} 

상당히 간단합니다 예상대로

관련 문제