這是一個Java和C#問題。我們都知道,Object Identity(==)測試兩個對象是否引用相同的位置,Obejct Equality(Equals方法)測試兩個不同的(不同的)對象是否具有相同的值。但是在字符串對象對象標識和對象平等是相同的。 對於e.g下面兩個布爾表達式中的if語句返回true關於對象標識和對象相等和字符串類異常的問題
string a="123";
string b="123";
if(a==b)
if(a.Equals(b))
爲什麼會這樣? 這個設計決定背後的理由是什麼?
我建議你閱讀的Object.Equals()和String.equals(代碼),你會看到這是不正確的。 –
在C#中,「==」不被視爲IDENTITY測試。它通常被用來做任何類的EQUALS方法。 「ReferenceEquals(a,b)」是.Net的IDENTITY測試。 – ToolmakerSteve