我是C#的新手,但不是编程。当我比较下面代码中两个字符串的长度时,我得到错误:
运营商'&'不能应用于'bool'和'int'
类型的操作数
显然string1.Length > 0
在此上下文中被视为布尔值。
我应该如何进行这种比较?
if (string1.Length > 0 & string2.Length = 0)
{
//Do Something
}
答案 0 :(得分:10)
出现错误的原因是因为您在表示=
时写了==
。在C#
string1.Length > 0 & string2.Length = 0
装置
(string1.Length > 0) & (string2.Length = 0)
左侧的类型是bool
,右侧的类型是int
,它们不能&
一起编辑,因此错误。当然,即使你设法超越了它,Length
也不能成为作业的目标。
使用==
测试是否相等。 =
是作业。
还要考虑使用&&
而不是&
。 x & y
的含义为"同时评估两者,如果true
和true
都为false
,则结果为x && y
。 false
的含义是"评估左侧;如果是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)。