4

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

运算符“&”不能应用于“bool”和“int”类型的操作数

显然string1.Length > 0在这种情况下被视为布尔值。

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

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

5 回答 5

10

错误的原因是因为你=在你的意思是写的==。在 C# 中

string1.Length > 0 & string2.Length = 0

方法

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

左侧bool的类型是 和右侧的类型是int,不能一起&-ed ,因此错误。当然,即使你设法克服了这一点,Length也不能成为任务的目标。

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

也考虑使用&&代替&. 的意思x & y是“评估两者,结果是true如果两者都是truefalse否则”。的含义x && y是“评估左侧;如果是,false则结果是false,所以不评估右侧。如果左侧是,true则照此&执行。”

于 2013-06-05T00:38:59.957 回答
8

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

你需要的是

if (string1.Length > 0 && string2.Length == 0)
于 2013-06-05T00:33:45.260 回答
3

您可能打算这样做:

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

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

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

if (string1.Length > string2.Length)
{
    //Do Something
}
于 2013-06-05T00:33:21.753 回答
0

这将解决您的问题。

if(string1.Length > 0 && string2.Length == 0)
于 2013-06-05T00:34:19.690 回答
0

我想你想要一个==来进行平等测试?C# 赋值返回一个值 (如在 C 中)

于 2013-06-05T00:36:16.700 回答