Я знаю, что HashSet может использовать базовые типы, такие как string и int, мой вопрос в том, какие типы можно использовать в HashSet. Я пытаюсь создать HashSet декартовых коордов, которые извлекают выгоду из HashSet из-за отсутствия дубликатов. Я попробовалИспользуемые типы HashSet?
HashSet<int[]> temp = new HashSet<int[]>{new int[]{1,1}, new int[]{1,1} }
но это не работает. Ищете тип, который я могу использовать для создания списка уникальных коордов.
Любой тип 'T', для которого вы можете определить правильный' IEqualityComparer ', который реализует ваше значение равенства, может использоваться в' HashSet '. –
PetSerAl
Итак, Point не дает ничего, чтобы показать, что он будет использовать IEqualityComparar на веб-сайте Microsoft. Я посмотрел на Tuple [link] (https://msdn.microsoft.com/en-us/library/dd268536 (v = vs.110) .aspx), тогда это будет полезно использовать в качестве HashSet из >? –
Edward
Что вы действительно спрашиваете, почему ваши два массива не воспринимаются как одно и то же в хэш-наборе, что по сути является тем же вопросом, что и в отмеченном дубликате. Другим очень близким дублированием является https://stackoverflow.com/questions/7244699/gethashcode-on-byte-array. См. Также https://stackoverflow.com/questions/7138382/array-comprasion-as-dictionary-keys-in-c-sharp и https://stackoverflow.com/questions/15941389/why-does-my-dictionary- сохраняя в виду, что словари в основном такие же, как и хэш-множества, за исключением того, что они соединяют значение с каждым ключом. –