【问题标题】:'&&' and '||' operators with strings [closed]'&&' 和 '||'带字符串的运算符 [关闭]
【发布时间】:2014-04-08 07:01:43
【问题描述】:

请忽略。这没有得到适当的研究。抱歉

我经常遇到这个问题,但我不确定为什么会发生这种情况。

比较两个整数可以使用&&|| 运算符,如下所示:

    int a = ...;
    int b = ...;
    if (a && b == 1) { do something }

但是,这不适用于字符串。相反,您必须像这样布置它:

    string a = ...;
    string b = ...;
    if (a == "Hello" && b == "Hello") { do something }

谁能告诉我这是为什么?

【问题讨论】:

  • 我不认为这可以编译。你确定吗?
  • 我也无法编译
  • 我假设您之前声明了变量,并且没有在行内声明它们。我的编辑更好吗?如果没有,请随时回滚。
  • a && b == 1 仍然无法编译。 C# 没有对布尔值的隐式转换,&& 不能应用于整数
  • 你的问题是无意义的,你的代码没有编译。现在你改变了,它更无意义,因为编译和工作都很好。(使用 a==2 或者当然,它仍然无法编译)

标签: c# string operators


【解决方案1】:

您的第一个示例并不像您认为的那样工作。您还需要像这样定义它:

if (a == 1 && b == 1) { do something }

sn-p 似乎起作用的原因是a 表达式是一个整数,可以隐式转换为布尔值。您正在检查 a 在较大的表达式中是否减少为 true 或 false,而不是它是否等于 1。另一方面,字符串不会隐式转换为布尔值,因此它在编译时失败,而不是给出运行时的错误结果。

【讨论】:

  • +1 用于解释隐式转换
  • 那个 if 语句不能编译。
  • 抱歉,可能遗漏了什么,但这不是有效的 C# 代码。而且 C# 也没有隐式转换为布尔值。
  • @Selman22 我从表面上看示例代码。现在应该都是玫瑰。
  • 我不得不投反对票,因为“a 表达式是一个整数,可以隐式转换为布尔值”在 C# 中不是为真。我不确定为什么 OP 声称原始代码在上下文中有效,但不应该让这种错误假设继续下去; C# 会因“无法将类型 'int' 隐式转换为 'bool'”或类似情况而失败。
猜你喜欢
  • 2013-04-09
  • 2018-07-06
  • 1970-01-01
  • 2014-09-03
  • 2020-04-14
  • 2013-09-16
  • 2013-09-18
  • 2019-06-08
  • 2019-05-12
相关资源
最近更新 更多