理解 C# 中 == 和 Equals() 的區別
在 C# 中,您可能會遇到這種情況:使用 == 運算符比較兩個字符串返回 false,而 Equals() 方法返回 true。要理解這種行為,必須掌握這些運算符的根本區別。
當用於對象時,== 運算符的值為 System.Object.ReferenceEquals。這意味著它檢查兩個字符串對像是否引用內存中的同一個對象。相反,Equals() 是一個虛方法,可以被自定義類型(包括字符串)重寫。
對於字符串,使用 Equals() 的重寫版本,它檢查字符串的實際內容。因此,如果您比較兩個具有相同字符但存儲在不同內存位置的字符串,== 將返回 false,因為它們不是同一個對象引用,而 Equals() 將返回 true,因為它們的內容相等。
代碼示例:
考慮以下代碼片段:
if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack")) { // 执行代码 } if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack") { // 执行代码 }
在此代碼中,這兩個條件都將所選 ListBoxItem 的 Content 屬性與字符串“Energy Attack”進行比較。雖然使用 Equals() 的第一個條件將計算為 true,但如果 Content 屬性是一個新的字符串對象,則使用 == 的第二個條件可能會計算為 false。這是因為 == 運算符檢查標識,而具有相同值的兩個不同字符串對象並不相同。
因此,在 C# 中比較字符串相等性時,建議使用 Equals() 方法(它評估內容相等性),而不是 ==(它檢查標識)。
以上是C#字符串比較:==何時與equals()有所不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!