'&安培;&安培;'和'||'运算符与字符串

时间:2014-03-05 22:43:01

标签: c# string operators

请不要理会。这不是正确的研究。道歉

我偶然遇到过这个问题,我不确定为什么会发生这种情况。

使用&&||运算符来比较两个整数是合理的:

    int a = ...;
    int b = ...;
    if (a && b == 1) { do something }

但是,这不适用于字符串。相反,你必须这样做:

    string a = ...;
    string b = ...;
    if (a == "Hello" && b == "Hello") { do something }

谁能告诉我为什么会这样?

1 个答案:

答案 0 :(得分:4)

您的第一个样本并不像您认为的那样工作。您还需要像这样定义它:

if (a == 1 && b == 1) { do something }

代码片段似乎有效的原因是a表达式是一个整数,可以隐式转换为布尔值。您在更大的表达式中检查a是否减少为true或false,而不是它是否等于1.另一方面,字符串不会隐式转换为布尔值,因此它在编译时失败,而不是在运行时给出错误的结果。