Можно ли сгенерировать хэш-значение x86 при работе в режиме x64? - PullRequest
5 голосов
/ 17 декабря 2010

На этой неделе меня укусила ошибка, возникшая, когда мой код был размещен в процессе x64.Я использую хеш-значение для поиска, и я храню это хеш-значение в базе данных.Значение хеша, которое было сгенерировано в прошлом, было хэшем x86, и теперь, когда генерируются хэши x64, я получаю ошибки, потому что значения поиска больше не совпадают.

Я очень скептически отношусь к этому, но я все равно решил спросить.Можно ли сгенерировать хэш-значение x86, если мой код выполняется в процессе x64?

Для справки, я работаю в .NET 4.0 с использованием C #.

Редактировать:

Вот проблема, с которой я столкнулся: String.GetHashCode () возвращает разные значения

Вы можете продублировать проблему, создав консольное приложение со следующим кодом:

"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode()

Запустите приложение на платформе x86, затем запустите его на платформе x64.

Я просто хочу получить согласованные значения для разных платформ.Тем не менее, я могу просто создать предварительно скомпилированный список хэшей, чтобы в случае необходимости переключаться при сбое.Я просто хотел узнать, есть ли способ получить согласованные значения из GetHashCode ().Я так не думаю, но если это возможно, это будет самое простое решение в моем случае.

1 Ответ

7 голосов
/ 17 декабря 2010

Боюсь, если вы используете реализацию по умолчанию в .NET, то это невозможно. Они даже не гарантируют, что он будет возвращать один и тот же идентификатор между разными версиями .NET; и явно заявить, что он не должен использоваться в качестве уникального идентификатора. Прочитайте это на MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...