我在silverlight应用程序中有一个比较2个字符串的条件,由于某种原因,当我使用==时,它返回false而. equals()返回true。
代码如下:
if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
// Execute code
}
if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
// Execute code
}
你知道为什么会这样吗?
==
==运算符可用于比较任何类型的两个变量,它只是比较比特。
int a = 3;
byte b = 3;
if (a == b) { // true }
注意:在int的左边有更多的0,但我们在这里不关心它。
Int a(00000011) ==字节b (00000011)
记住==运算符只关心变量中比特的模式。
如果两个引用(原语)指向堆上的同一个对象,则使用==。
无论变量是引用还是原语,规则都是相同的。
Foo a = new Foo();
Foo b = new Foo();
Foo c = a;
if (a == b) { // false }
if (a == c) { // true }
if (b == c) { // false }
A == c是正确的
A == b是假的
a和c的位模式是相同的,所以使用==它们是相等的。
等于():
使用equals()方法查看两个不同的对象是否相等。
例如两个不同的String对象都表示“Jane”中的字符