Я столкнулся с небольшой проблемой, используя List в качестве ключа в словаре (). Вот мой пример кода, который иллюстрирует проблему:
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 }]);
Я знаю, что это ошибки, потому что Словарь использует ссылку на список, а не содержимое списка. В идеале следует использовать SequenceEquals, чтобы определить, существует ли ключ, если TKey является списком.
Есть идеи как обойти это? Есть ли другая коллекция, которую я мог бы использовать? Должен ли я просто создать новый класс-оболочку, SequenceDictionary?