可能重複:
Please tell why two references are same for string object in case of string(Code written below)缺省情況下,==運算符是如何工作的?
當我寫在C#s1 == s2
其中兩個聲明爲String的編譯器會比較引用或內容?即如果==
被替換爲string
類?
我只是想知道爲什麼這個代碼打印「真」:
string s1 = "hello"
string s2 = s1 + " ";
s2 = s2.Trim(); // i expect new object here
Console.WriteLine(s2 == s1);
而且我有一些第三方來源,其中==
通常用於字符串比較。這讓我發瘋,因爲我幾乎從不使用==
比較Java中的字符串,現在我無法理解這段代碼是如何工作的。
使用==
比較C#中的字符串是否正常?
upd:感謝所有人,幾乎所有的答案都是正確的。 總之:
- 是的,它使用「==」在C#中比較字符串
- 字符串是正常的將內容進行比較(不參考)
- 字符串==操作符不虛。
- 字符串在C#中是不可變的(這類似於Java)
此行爲是對Java不同,其中「==」爲String類比較引用。
也Why strings does not compare references?
看到我個人認爲語言不應該允許覆蓋或過載==操作符,因爲它使得像C++ :)
由於.NET處理字符串實習的方式,通過內存位置比較字符串往往會產生意外的結果。我可以想象這是與Java的主要區別(Java是否會串入實際內存?) – MattDavey 2011-04-14 10:10:24