2010-05-22 2 views
4

사전이나 SortedList와 같은 것이 필요하지만 같은 두 가지를 받으면 예외가 계속 발생합니다 ... 다른 방법이 있습니까?정확히 같은 키와 값을 가진 사전

감사

+0

당신은 PRISM을 다운로드하고 ListDictionay 클래스를 사용할 수 있습니다. – SwDevMan81

답변

0

사전에 키 또는 키가 고유해야 정렬 된 목록 : 그 해시 테이블의 목적입니다. List<KeyValuePair<TKey, TValue>> 또는 KeyValuePair<TKey, TValue>[]을 대신 사용할 수는 있지만 중복되는 경우 키로 값을 찾을 수 없습니다.

0

사전과 정렬 목록 모두 키가 있습니다. 즉, 키가 고유해야합니다.

예를 들어 항목을 추가하기 전에 확인할 수 있습니다. 추가하기 전에 dic.ContainsKey(key) 또는

단일 키에 대해 여러 값을 추가하려는 경우 NameValueCollection을 사용할 수 있습니다.

4

아마도 multimap이 필요합니다. Dictionary<Key, List<Value>>으로 시뮬레이션 할 수 있습니다. this question을 참조하십시오. 일부 멀티 맵 구현이 있습니다.

dictionary[key] = value; 

당신 경우 : 당신이

dictionary.Add(key, value); 

을 사용하고 있는지 당신은 그냥 다음 바로 인덱서를 사용, 기존의 키/값 쌍을 교체 행복 경우

4

내 생각이다 동일한 키에 대해 여러 값을 원한다면 다른 답변을 참조하십시오.

+0

미안하지만, 내 마음에 드는 Jon Skeet 사실을 상기시켜 주셨습니다. 5 달러면 Jon Skeet이 5 달러면 Jon Skeet이 당신보다 돈이 많습니다. Lol. :) ... +1 –

+0

저는 실제로 이메일에 대한 정보를 저장하는 데 사용하고 있습니다. 키를 사용하여 보낸 사람의 전자 메일을 저장하고 그 값이 전자 메일의 제목을 보유하고 있습니다 –

+0

@ j-t-s : 그렇다면 특정 사용자의 전자 메일이 두 개 이상 있다는 실제 *의 의미는 무엇입니까? 모든 주제를 저장해야합니까 아니면 최신 주제 만 저장해야합니까? –

0

값이 같은 사전이 있다면 키가 있으면 System.Collections.Generic 네임 스페이스에 'HashSet'이라는 일반 컬렉션 형식이 있습니다.이 컬렉션 형식은 그 용도로 사용됩니다.

사전에 추가 할 때 생성 된 예외에 대해 묻는다면 Jon Skeet이 아마 문제 일 가능성이 높다고 생각합니다.

HashSet의 :

http://msdn.microsoft.com/en-us/library/bb359438.aspx

관련 문제