相关疑难解决方法(0)

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万
查看次数

使用==或Equals进行字符串比较

在某些语言(例如C++)中,您不能使用==等运算符进行字符串比较,因为它会比较字符串对象的地址,而不是字符串本身.但是,在C#中,您可以使用==来比较字符串,它实际上会比较字符串的内容.但是还有字符串函数来处理这种比较,所以我的问题是; 你应该?

鉴于两个字符串:

string aa = "aa"; 
string bb = "bb";
Run Code Online (Sandbox Code Playgroud)

你应该像这样比较它们:

bool areEqual = (aa == bb); 
Run Code Online (Sandbox Code Playgroud)

或者你应该使用Equal函数,如下所示:

bool areEqual = aa.Equals(bb); 
Run Code Online (Sandbox Code Playgroud)

反正有技术差异吗?或者最佳实践的合理论据?

.net c# string string-comparison

10
推荐指数
2
解决办法
5556
查看次数

标签 统计

c# ×2

string ×2

.net ×1

string-comparison ×1