他们真的一样吗?今天,我遇到了这个问题.这是立即窗口的转储:
?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)
所以,无论是s和tvi.Header包含"类别",而是==返回false,并Equals()返回true.
s被定义为字符串,tvi.Header实际上是一个WPF TreeViewItem.Header.那么,他们为什么会回归不同的结果呢?我一直认为它们可以在C#中互换.
任何人都可以解释为什么会这样吗?
我有一个string可以是"0"或"1",并保证它不会是其他任何东西.
所以问题是:将此转换为最佳,最简单,最优雅的方法是bool什么?
谢谢.
如果在“if”而不是布尔值的开头使用字符串进行比较,性能/代码质量是否有明显差异?
字符串示例:
string isTrue = "true";
if (isTrue == "true"){
// do something
}
Run Code Online (Sandbox Code Playgroud)
带有布尔值的示例:
bool isTrue = true;
if (isTrue){
//do something
}
Run Code Online (Sandbox Code Playgroud)
我通常使用 bool 进行此类比较,但我在网上看到了两种变体。