为了账号安全,请及时绑定邮箱和手机立即绑定

if 语句在 C# 中不起作用

if 语句在 C# 中不起作用

C#
萧十郎 2021-10-09 16:05:36
我有一个相当简单的任务,我想做但发生了一些奇怪的事情。我只想检查字符串中的元素是否等于零,然后相应地设置一个整数。这是我的代码if (ssRow[(bar_position_row - 3)].Equals("0") && ssRow[(bar_position_row + 1)].Equals("0"))   {      back_row = 2;      front_row = 2;   }else if (!ssRow[(bar_position_row - 3)].Equals("0") && !ssRow[(bar_position_row + 1)].Equals("0"))   {      back_row = 3;      front_row = 1;   }else if (ssRow[(bar_position_row - 3)].Equals("0") && !ssRow[(bar_position_row + 1)].Equals("0"))   {      back_row = 2;      front_row = 1;   }当我测试我的代码时,在几个示例中ssRow[(bar_position_row - 3)] and ssRow[(bar_position_row + 1)]等于零,但不知何故ssRow[(bar_position_row - 3)].Equals("0")和ssRow[(bar_position_row + 1)].Equals("0")都是假的。有谁知道我的错误是什么?
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

当你索引一个字符串时,你得到的是 a char,而不是 another string。然后,您将其char与string( "0")进行比较,并且可以理解地返回false。


您应该与'0'(a char)进行比较,而不是"0"(a string)。并且由于char是值类型,您可以只使用==相等运算符。如果您一开始就这样做了,这将是一个编译时错误。


见示例:


"abc"[0].Equals("a") //false

"abc"[0].Equals('a') //true


"abc"[0] == 'a' //true

"abc"[0] == "a" //compile-time error, can't compare char with string


查看完整回答
反对 回复 2021-10-09
?
弑天下

TA贡献1818条经验 获得超8个赞

我不知道 的类型ssRow,如果对它使用索引访问没有返回一个string,那么Equals("0")就是在做对象相等。

要修复它,请考虑.ToString()首先使用:ssRow[(bar_position_row - 3)].ToString().Equals("0")


查看完整回答
反对 回复 2021-10-09
  • 2 回答
  • 0 关注
  • 259 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信