猿问

if 语句在 C# 中不起作用

我有一个相当简单的任务,我想做但发生了一些奇怪的事情。我只想检查字符串中的元素是否等于零,然后相应地设置一个整数。


这是我的代码


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")都是假的。有谁知道我的错误是什么?


萧十郎
浏览 260回答 2
2回答

慕码人2483693

当你索引一个字符串时,你得到的是 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

弑天下

我不知道 的类型ssRow,如果对它使用索引访问没有返回一个string,那么Equals("0")就是在做对象相等。要修复它,请考虑.ToString()首先使用:ssRow[(bar_position_row - 3)].ToString().Equals("0")
随时随地看视频慕课网APP
我要回答