C#string.length> 0看作布尔值

时间:2013-06-05 00:31:22

标签: c#

我是C#的新手,但不是编程。当我比较下面代码中两个字符串的长度时,我得到错误:

  

运营商'&'不能应用于'bool'和'int'

类型的操作数

显然string1.Length > 0在此上下文中被视为布尔值。

我应该如何进行这种比较?

if (string1.Length > 0 & string2.Length = 0)
{
    //Do Something
}

5 个答案:

答案 0 :(得分:10)

出现错误的原因是因为您在表示=时写了==。在C#

string1.Length > 0 & string2.Length = 0

装置

(string1.Length > 0) & (string2.Length = 0)

左侧的类型是bool,右侧的类型是int,它们不能&一起编辑,因此错误。当然,即使你设法超越了它,Length也不能成为作业的目标。

使用==测试是否相等。 =是作业。

还要考虑使用&&而不是&x & y的含义为"同时评估两者,如果truetrue都为false,则结果为x && yfalse的含义是"评估左侧;如果是false,则结果为true,因此不要评估右侧。如果左侧是&,则按{{1}}进行操作。"

答案 1 :(得分:8)

当应用于整数时,C#中的&运算符是按位AND,而不是逻辑AND=也是赋值,而不是相等比较运算符。 string1.Length > 0表达式确实是布尔类型的表达式,而赋值是整数(因为0是整数)。

您需要的是

if (string1.Length > 0 && string2.Length == 0)

答案 2 :(得分:3)

您可能打算这样做:

if (string1.Length > 0 && string2.Length == 0)
{
    //Do Something
}

在C#中,=运算符仅用于赋值。 ==用于等式比较。您可能还想使用&&运算符而不是&(如果第一个条件的计算结果为false,则&&将跳过第二个条件。)

但是,如果真的想'比较字符串的长度',你可以这样做:

if (string1.Length > string2.Length)
{
    //Do Something
}

答案 3 :(得分:0)

这将解决您的问题。

if(string1.Length > 0 && string2.Length == 0)

答案 4 :(得分:0)

我认为您需要==进行平等测试? C#任务returns a value (as in C)