2014-03-05 46 views
-4

请放弃。这没有得到正确的研究。我的歉意'&&'和'||'带字符串的运营商

我遇到过这个问题一点点,我不确定这是为什么发生。

要比较两个整数是好的使用&&||运营商,因为这样的:

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

然而,这并不能处理字符串。相反,你必须这样摆脱它:

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

有谁能告诉我为什么这是什么?

+5

我不认为这个编译。你确定? –

+0

我不能得到这个编译 – BradleyDotNET

+0

是的,对此抱歉。没有想到通过。我确信之前有过这种情况。 – Ben

回答

4

你的第一个样品不符合你的想法。您需要定义它像这样还有:

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

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

+1

+1用于解释隐式转换 – BradleyDotNET

+1

如果语句不编译。 –

+3

对不起,可能会丢失一些东西,但这不是有效的C#代码。而C#也没有隐式转换为布尔值。 – Andrei