相关疑难解决方法(0)

==和等于()之间的C#差异

我在Silverlight应用程序中有一个比较2个字符串的条件,由于某种原因,当我使用==它时返回false.Equals()返回true.

这是代码:

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // Execute code
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // Execute code
}
Run Code Online (Sandbox Code Playgroud)

任何理由为什么会这样?

.net c# equals

519
推荐指数
9
解决办法
28万
查看次数

string.Equals()和==运算符是否真的相同?

他们真的一样吗?今天,我遇到了这个问题.这是立即窗口的转储:

?s 
"Category" 
?tvi.Header 
"Category" 
?s == tvi.Header 
false 
?s.Equals(tvi.Header) 
true 
?s == tvi.Header.ToString() 
true 
Run Code Online (Sandbox Code Playgroud)

所以,无论是stvi.Header包含"类别",而是==返回false,并Equals()返回true.

s被定义为字符串,tvi.Header实际上是一个WPF TreeViewItem.Header.那么,他们为什么会回归不同的结果呢?我一直认为它们可以在C#中互换.

任何人都可以解释为什么会这样吗?

c# string

224
推荐指数
5
解决办法
25万
查看次数

C#.Equals(),. ReferenceEquals()和==运算符

我对这三个的理解是:

  • .Equals()测试数据平等(缺乏更好的描述)..Equals()可以为同一对象的不同实例返回True,这是最常被覆盖的方法.

  • .ReferenceEquals() 测试两个对象是否是同一个实例,并且不能被覆盖.

  • ==ReferenceEquals()默认情况下与此相同,但可以覆盖此项.

C#站说:

在对象类中,EqualsReferenceEquals方法在语义上是等效的,除了ReferenceEquals它只在对象实例上有效.该 ReferenceEquals方法是静态的.

现在我没理解.任何人都可以对此有所了解吗?

c# equality

76
推荐指数
3
解决办法
5万
查看次数

标签 统计

c# ×3

.net ×1

equality ×1

equals ×1

string ×1