List()를 Dictionary() 키로 사용하여 약간의 문제가 발생했습니다. 사전 목록의 내용보다는 목록의 참조를 사용하고 있기 때문에List of Key of List <T>
Dictionary<List<double>, string> test = new Dictionary<List<double>, string>();
var a = new List<double>() { 1.0 };
var b = new List<double>() { 2.0 };
test.Add(a, "A");
test.Add(b, "B");
// Works because the reference is the same
Console.WriteLine(test[a]);
// KeyNotFoundException
Console.WriteLine(test[new List<double>() { 1.0 }]);
내가 오류를 알고 여기에 문제를 보여줍니다 내 샘플 코드입니다. 이상적으로 TKey가 목록 인 경우 키가 존재하는지 여부를 결정하기 위해 SequenceEquals를 사용해야합니다.
이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 사용할 수있는 다른 컬렉션이 있습니까? SequenceDictionary라는 새로운 래퍼 클래스를 생성해야합니까?
그렇다면 먼저 인스턴스를 만들지 않고서는 어떻게 할 수 없습니까? – evasilchenko
'List'를 사용하여 Ex IList를 구현하고 (Equals와 GetHashCode를 오버라이드하는) 자신의 클래스를 작성하십시오. –
@DeviantSeev : var c = new List() {1.0};'then'test [c]'c = {1.0}'인데도 'c'가 다른 참조를 가지고 있기 때문에 예외가 여전히 발생합니다. –
Mark