回答
你應該能夠確定引用是等價的。
嘗試使用ReferenceEquals函數檢查是否有對同一對象的引用。
但是'Equals'用於測試這兩個對象是否「喜歡」。即使有兩個對象,情況也是如此。例如'string x =「abc」;字符串y =「a」; y + =「bc」;',代碼運行後,'x'和'y'具有相同的散列碼。 'Equals'返回'true',因爲'x'和'y'具有相同的字符串值。但'ReferenceEquals'返回'false',因爲'x'和'y'指的是兩個對象,不是同一個(不重要的是兩個對象實際上是相同的)。 –
@JeppeStigNielsen你是對的。但是,我相信提問者試圖確定他是否提及同一個對象,而不是如果變量的值相等。 – Mash
如果她(@HodayaShalom)真的只對對象平等感興趣,而不是使用'x.GetHashCode()',她可以說'RuntimeHelpers.GetHashCode(x)'。即使「x」和「y」是兩個「等於」wrt的對象實例,它將(以極高的概率)給出唯一的代碼。 'Equals'。另一方面,重寫的實例方法'GetHashCode()'(無參數)必須爲'x'和'y'提供一個共同的哈希。 –
這在文檔中有很多介紹。假設你只有散列碼:
GetHashCode方法的默認實現不是 保證了不同對象的唯一返回值。此外,.NET Framework不保證 GetHashCode方法的默認實現,並且它返回的值將在 不同版本的.NET Framework之間相同。因此,不得將此方法的默認實現用作散列目的的唯一對象 標識符。
從http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx
我讀過它,但讓我們說這樣的事情發生了,我無法改變它,沒有辦法知道兩個變量之間的差異? –
假設你有舊的哈希碼,不。你可以檢查對象引用是否相等,但你的問題似乎暗示你所知道的是散列碼。 –
- 1. PyGame雪碧衝突衝突
- 2. 意外的顛覆衝突行爲(衝突沒有衝突)
- 3. 我如何automerge非衝突的衝突
- 4. jQuery的衝突
- 5. 的PendingIntent衝突
- 6. JQuery的衝突?
- 7. jQuery的衝突
- 8. jQuery的衝突
- 9. 衝突的Dll
- 10. jQuery的衝突
- 11. jQuery的衝突
- 12. 的strings.xml衝突
- 13. 衝突的jQuery
- 14. 衝突的WordPress
- 15. .htaccess的衝突
- 16. 衝突的
- 17. 衝突
- 18. 衝突
- 19. 衝突
- 20. 衝突
- 21. 衝突
- 22. 衝突
- 23. 衝突
- 24. 衝突
- 25. 衝突
- 26. 衝突
- 27. 衝突
- 28. 衝突
- 29. 衝突
- 30. 衝突
你可以發佈代碼嗎?我不太確定「在同一個HashCode上是什麼意思是我能得到它們的唯一方式」。 –
我沒有代碼,它是一個普遍的問題。 –