首頁 > 後端開發 > C++ > C#字符串比較:==何時與equals()有所不同?

C#字符串比較:==何時與equals()有所不同?

DDD
發布: 2025-02-01 18:56:08
原創
322 人瀏覽過

C# String Comparison: When Does == Differ From Equals()?

理解 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中文網其他相關文章!

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