簡體   English   中英

C#字符串文字GetHashCode()計算給定的上下文是否不同?

[英]C# string literal GetHashCode() evaluates differently given context?

因此,我有一些失敗的代碼,因為兩個字符串文字包含可以評估為同一事物的HashCodes。 而且,盡管我很欣賞發生碰撞的可能,但我並不十分期待。 但是在調試代碼中的問題時,一位同事發現我在一個即時窗口中

"55d02ProductAd".GetHashCode() == "55b0tProductAd".GetHashCode()

這將是true 不理想,但並非不可能。 當我們向另一位同事描述這件事時,他難以置信地寫了一個草稿程序,

var h1 = "55d02ProductAd".GetHashCode();
var h2 = "55b0tProductAd".GetHashCode();
Console.WriteLine(h1 == h2);

在上文中,他們對同一事物的評價不同。 我們的監視器彼此相鄰,我們對不同的輸出感到困惑。 有什么想法嗎?

哈希代碼僅按合同規定有義務在單個應用程序執行的上下文中為某個值生成相同的哈希。 由於您要比較完全不同的應用程序中的GetHashCode的值,因此沒有義務使它們相等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM