请不要理会。这不是正确的研究。道歉
我偶然遇到过这个问题,我不确定为什么会发生这种情况。
使用&&
和||
运算符来比较两个整数是合理的:
int a = ...;
int b = ...;
if (a && b == 1) { do something }
但是,这不适用于字符串。相反,你必须这样做:
string a = ...;
string b = ...;
if (a == "Hello" && b == "Hello") { do something }
谁能告诉我为什么会这样?
答案 0 :(得分:4)
您的第一个样本并不像您认为的那样工作。您还需要像这样定义它:
if (a == 1 && b == 1) { do something }
代码片段似乎有效的原因是a
表达式是一个整数,可以隐式转换为布尔值。您在更大的表达式中检查a
是否减少为true或false,而不是它是否等于1.另一方面,字符串不会隐式转换为布尔值,因此它在编译时失败,而不是在运行时给出错误的结果。