首頁 > 後端開發 > C++ > C#字符串比較:我什麼時候應該使用`==`vs.

C#字符串比較:我什麼時候應該使用`==`vs.

Mary-Kate Olsen
發布: 2025-02-01 19:16:13
原創
665 人瀏覽過

C# String Comparison: When Should I Use `==` vs. `Equals()`?

C# 字符串相等性難題:==Equals() 的比較

C# 提供了兩種比較字符串的運算符:==Equals()。雖然它們看起來可以互換,但它們表現出細微不同的行為,可能導致意想不到的結果。讓我們通過一個具體的場景深入探討這個語言難題。

在一個 Silverlight 應用程序中,一個條件比較兩個字符串:

<code class="language-csharp">if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // 执行代码
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // 执行代码
}</code>
登入後複製

奇怪的是,== 比較返回 false,而 Equals() 調用返回 true。為什麼會出現這種差異?

答案在於這些運算符的底層實現。當與對象表達式一起使用時,== 會評估為 System.Object.ReferenceEquals。此方法比較的是對象引用,而不是對象的 內容。在這種情況下,兩個字符串存儲在不同的內存位置,因此 ReferenceEquals 返回 false。

另一方面,Equals 是一個虛擬方法,可以被派生類型重寫。對於字符串類型,重寫版本比較字符串的實際 內容,從而返回 true。

因此,對於字符串相等性比較,建議使用 Equals(),它更直觀,並且執行所需的基於內容的比較。

以上是C#字符串比較:我什麼時候應該使用`==`vs.的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板