【问题标题】:C# string.length > 0 seen as booleanC# string.length > 0 被视为布尔值
【发布时间】:2013-06-05 08:51:52
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您的意思是== 而不是=
  • 我对C#不熟悉,但不就是==和&&运算符吗?
  • 使用String.IsNullOrEmpty(parameter) 或至少与String.Empty 进行比较,而不是检查长度。

标签: c#


【解决方案1】:

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

string1.Length > 0 & string2.Length = 0

意思

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

左边的类型是bool,右边的类型是int,不能&-ed在一起,所以报错。当然,即使你成功了,Length 也不能成为任务的目标。

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

考虑同时使用&& 而不是&x & y 的含义是“评估两者,如果两者都是true,则结果是true,否则是false”。 x && y 的含义是“评估左侧;如果是false,则结果为false,因此不评估右侧。如果左侧是true,则按照& 进行。 "

【讨论】:

    【解决方案2】:

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

    你需要的是

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

    【讨论】:

    【解决方案3】:

    你可能打算这样做:

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

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

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

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

    【讨论】:

      【解决方案4】:

      这将解决您的问题。

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

      【讨论】:

      • 感谢大家。添加额外的 = 符号从而进行比较而不是分配解决了我的问题....现在,如果我能弄清楚如何将此问题标记为已回答;-)
      【解决方案5】:

      我想你想要一个== 来进行你的平等测试? C#赋值returns a value(as in C)

      【讨论】:

        猜你喜欢
        • 2016-08-29
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多