변경 불가능한 Dictionary<TKey, TValue>
과 같은 클래스에 대해 생성자를 구현하는 방법은 무엇입니까?변경 불가능한 사전 <TKey, TValue>
ImmutableDic<int, int> Instance = new ImmutableDic<int, int> { {1, 2}, {2, 4}, {3,1} };
변경 불가능한 Dictionary<TKey, TValue>
과 같은 클래스에 대해 생성자를 구현하는 방법은 무엇입니까?변경 불가능한 사전 <TKey, TValue>
ImmutableDic<int, int> Instance = new ImmutableDic<int, int> { {1, 2}, {2, 4}, {3,1} };
가장 간단한 해결책은 가변 IDictionary<TKey, TValue>
허용하는 생성자를 작성하는 것이다
도 가능 사용자가 구문을 사용할 수 있도록하는 것이다. 변경이 용이 한 사전을 구축하고 당신의 불변 사전의 생성자에 전달 : 그것이 Add
방법을 필요로하기 때문에
var data = new Dictionary<int, int> { {1, 2}, {2, 4}, {3,1} };
var instance = new ImmutableDic<int, int>(data);
바와 같이 BoltClock의 의견에 설명, 이니셜 구문, 불변의 사전을 사용할 수 없습니다.
생성자에 IEnumerable<KeyValuePair<TKey, TValue>>
을 허용하십시오.
이 방법을 수행 할 수 있습니다 :
var Instance = new ImmutableDic<int, int>(
new Dictionary<int, int> {1, 2}, {2, 4}, {3,1} });
당신은 "새로운 사전"의 "최소한의"추가로 구성 할 수 있습니다, 당신은 또한 편리과 같은 열거 시퀀스를 생성하는 다른 방법을 사용할 수 있습니다 .
이 구문은 컴파일러에 의해 일련의'.Add()'호출로 변환됩니다. 즉, 변경 가능한 사전이 필요합니다. – BoltClock
감사합니다! 그렇다면 생성자를 어떻게 구현할 것입니까? 아마도 constructor에 매개 변수와 동일한 길이의 두 배열을받는 것입니까? – Miguel