c#字符串.长度比;0被视为布尔值

本文关键字:布尔值 字符串 | 更新日期: 2023-09-27 18:16:52

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

操作符'&'不能应用于'bool'和'int'类型的操作数

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

我应该如何执行这个比较?

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

c#字符串.长度比;0被视为布尔值

错误的原因是因为你写了=时,你的意思是==。在c#中

string1.Length > 0 & string2.Length = 0

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

左边的类型是bool,右边的类型是int,不能和& -ed在一起,所以出现错误。当然,即使您设法通过了这一点,Length也不能成为赋值的目标。

使用==测试是否相等。=是赋值。

也考虑使用&&代替&x & y的含义是"同时求值,如果同时为truefalse,则结果为true"。x && y的含义是"对左侧求值;如果它是false,那么结果是false,所以不计算右边。如果左边是true,那么按照&的做法进行。"

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

你需要的是

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

你可能想这样做:

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

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

然而,如果你真的想要"比较字符串的长度",你可以这样做:

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

这会解决你的问题。

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

我想你想要一个==作为你的相等性测试?c#赋值返回一个值(和C一样)。