Я знаю, что было несколько вопросов относительно HashSet
и сохранения заказа, и очень простые тесты показывают, что при добавлении и удалении элементов заказ не будет сохранен вообще.
Но мой вопрос явно связан с тем, сохраняется ли порядок вставки, если из HashSet
.
не удаляются никакие элементы.
Еще в 2009 году Джон Скит (https://stackoverflow.com/a/657289/10894153) сказал, что:
Возможно, что если вы никогда не удалите какие-либо элементы, это сохранит порядок вставки. Я не уверен, но я не был бы полностью удивлен.
В то время он утверждал, что:
Я не смотрел на внутренние структуры или исходный код (которого у меня, очевидно, нет).
Очевидно, что это изменилось, и теперь .NET с открытым исходным кодом, мне интересно, может ли кто-нибудь с уверенностью проверить, действительно ли порядок вставок сохраняется на HashSet
, когда ни один элемент не удален.
Прежде чем задать этот вопрос, я выполнил пару быстрых тестов с добавлением 1000 элементов к HashSet
и порядок вставки был сохранен, но это ни в коем случае не является доказательством того, что он всегда будет случай, даже если не происходит удаление.
EDIT
Как указывает HimBromBeere, официальная документация для HashSet
гласит, что порядок не сохраняется и, следовательно, даже если текущие реализации поддерживают (хотя ясно, что они не гарантируют это), порядок вставки это может измениться в будущем.
При этом меня интересует, поддерживается ли порядок вставки, когда не происходит удаления в текущей реализации (.NET 4.7.2)