我在比较 2 个字符串的 silverlight 应用程序中有一个条件,由于某种原因,当我使用==它时返回 false 而.Equals()返回 true 。
==
.Equals()
这是代码:
if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack")) { // Execute code } if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack") { // Execute code }
为什么会发生这种情况?
当==用于类型的表达式时object,它会解析为System.Object.ReferenceEquals.
object
System.Object.ReferenceEquals
Equals只是一种virtual方法并且行为如此,因此将使用覆盖的版本(用于string比较内容的类型)。
Equals
virtual
string