2011-03-15 25 views
3

我有一個場景,其中我的服務器端代碼在客戶端運行在x64中的x86環境中運行。我們正在使用String.GetHashCode()來標識HashTable中的對象,因爲「GetHashCode的行爲取決於其實現,這可能會從公共語言運行時的一個版本改變爲另一個版本」,因此我們正在使用String.GetHashCode()。我使用不安全的代碼從下面的堆棧溢出問題創建x86等價的GetHashCode():Can I depend on the values of GetHashCode() to be consistent?創建重載String.GetHashCode()在x86和x64環境中返回相同的值

我有幾個問題:

  1. 最好先離開託管代碼世界中不安全的代碼。
  2. 如何將上述問題中的不安全代碼轉換爲安全代碼。
+0

爲什麼服務器的AddToHashTable方法不能返回它在存儲對象時生成的哈希碼? – 2011-03-16 21:35:15

+0

另外... http://blogs.msdn.com/b/ericlippert/archive/2011/02/28/guidelines-and-rules-for-gethashcode.aspx – 2011-03-16 21:35:42

+0

@奧斯汀:感謝您的回覆。我使用了您推薦的第一個解決方案。 – Manthan 2011-03-16 23:23:33

回答

1

爲所提供的字符串生成HashCode的創建方法和擴展方法,即使客戶機和服務器在不同的環境(x86或x64)中執行,也是如此。