2011-03-25 4 views
1

변경 불가능한 Dictionary<TKey, TValue>과 같은 클래스에 대해 생성자를 구현하는 방법은 무엇입니까?변경 불가능한 사전 <TKey, TValue>

ImmutableDic<int, int> Instance = new ImmutableDic<int, int> { {1, 2}, {2, 4}, {3,1} }; 
+4

이 구문은 컴파일러에 의해 일련의'.Add()'호출로 변환됩니다. 즉, 변경 가능한 사전이 필요합니다. – BoltClock

+0

감사합니다! 그렇다면 생성자를 어떻게 구현할 것입니까? 아마도 constructor에 매개 변수와 동일한 길이의 두 배열을받는 것입니까? – Miguel

답변

3

가장 간단한 해결책은 가변 IDictionary<TKey, TValue> 허용하는 생성자를 작성하는 것이다

도 가능 사용자가 구문을 사용할 수 있도록하는 것이다. 변경이 용이 한 사전을 구축하고 당신의 불변 사전의 생성자에 전달 : 그것이 Add 방법을 필요로하기 때문에

var data = new Dictionary<int, int> { {1, 2}, {2, 4}, {3,1} }; 
var instance = new ImmutableDic<int, int>(data); 

바와 같이 BoltClock의 의견에 설명, 이니셜 구문, 불변의 사전을 사용할 수 없습니다.

1

생성자에 IEnumerable<KeyValuePair<TKey, TValue>>을 허용하십시오.

이 방법을 수행 할 수 있습니다 :

var Instance = new ImmutableDic<int, int>(
    new Dictionary<int, int> {1, 2}, {2, 4}, {3,1} }); 

당신은 "새로운 사전"의 "최소한의"추가로 구성 할 수 있습니다, 당신은 또한 편리과 같은 열거 시퀀스를 생성하는 다른 방법을 사용할 수 있습니다 .

관련 문제