我在Silverlight应用程序中有一个条件,它比较2个字符串,由于某种原因,当我使用==它时,它返回 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