Будь осторожен!
HashCode по умолчанию для объекта .Net часто изменяется между экземплярами времени выполнения программы.
Другими словами, если ваша программа сериализует объект A
, дополненный хеш-кодом, кдиск, затем программа завершается, а затем перезапускается и десериализует объект A
с диска (или создает идентичный объект A
во время выполнения), он будет иметь другой хеш-кодчем то, что было сохранено.
Это отчасти потому, что хеш-код по умолчанию исходит из информации сборщиков мусора об объекте.В новом экземпляре программы GC будет иметь другую информацию и, следовательно, другой хеш-код.
Если вы напишите свой собственный GetHashCode
, вы можете создать хеш-код, который будет одинаковым для всех процессов.Но здесь есть ловушка, о которой вам нужно знать.