Я все еще довольно новичок в C #, но заметил заметки в сообщениях на форуме о том, что в некоторых случаях HashSet
вместо List
.
В моем нынешнем случае дело не в том, что я храню огромное количество данных в одном List
, а скорее в том, что мне приходится часто проверять его членов.
Загвоздка в том, что мне действительно нужно перебирать и ее, но порядок их хранения или получения на самом деле не имеет значения.
Я читал, что для каждого цикла на самом деле медленнее, чем для следующего, так как еще я мог бы сделать это самым быстрым способом?
Количество проверок .Contains()
, которые я делаю, определенно ухудшает мою производительность со списками, поэтому по крайней мере сравнение с HashSet
было бы удобно.
Редактировать: в настоящее время я использую списки, перебирая их в разных местах, и в каждом месте выполняется разный код. Чаще всего текущие списки содержат координаты точек, которые я затем использую для ссылки на двумерный массив, для чего я затем выполняю ту или иную операцию на основе критериев списка.
Если нет прямого ответа на мой вопрос, это нормально, но я предположил, что могут быть другие методы итерации по HashSet
, чем просто foreach
цикл. В настоящее время я не знаю, какие еще методы могут быть, какие преимущества они предоставляют и т. Д. Предполагая, что существуют другие методы, я также предположил, что существует типичный предпочтительный метод выбора, который игнорируется только тогда, когда это не соответствует потребностям (мои потребности довольно простые).
Что касается преждевременной оптимизации, я уже знаю, что списки используются, поскольку я являюсь узким местом. Как помочь этому вопросу - вот где я застреваю. Даже не застрял точно, но я не хотел заново изобретать колесо, проводя многократные тесты, чтобы убедиться, что я уже делаю это наилучшим образом (это большой проект, на который вложено более 3 месяцев, списки есть везде , но есть определенно те, которые я не хочу дублировать, иметь много данных, их не нужно хранить в каком-либо определенном порядке и т. д.).