c#字符串.长度比;0被视为布尔值
本文关键字:布尔值 字符串 | 更新日期: 2023-09-27 18:16:52
我是c#新手,但不是编程新手。当我在下面的代码中比较两个字符串的长度时,我得到错误:
操作符'&'不能应用于'bool'和'int'类型的操作数
显然,string1.Length > 0
在上下文中被视为布尔值。
我应该如何执行这个比较?
if (string1.Length > 0 & string2.Length = 0)
{
//Do Something
}
错误的原因是因为你写了=
时,你的意思是==
。在c#中
string1.Length > 0 & string2.Length = 0
是
(string1.Length > 0) & (string2.Length = 0)
左边的类型是bool
,右边的类型是int
,不能和&
-ed在一起,所以出现错误。当然,即使您设法通过了这一点,Length
也不能成为赋值的目标。
使用==
测试是否相等。=
是赋值。
也考虑使用&&
代替&
。x & y
的含义是"同时求值,如果同时为true
和false
,则结果为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一样)。