不同的行为取决于if语句构造

时间:2014-03-03 08:56:25

标签: c# windows-phone-7 if-statement windows-phone-8

我很少与一小撮代码混淆 - 我创建了自己的the problem asked here解决方案 - 在KeyUp事件中我执行一些检查然后添加一个空格或删除一个字符:

private void myTextbox_KeyUp1(object sender, System.Windows.Input.KeyEventArgs e)
{
   string text = myTextbox.Text;
   if (text.Length > 3)
   {
      if (e.Key == System.Windows.Input.Key.Back)
      {
         if (text.Length % 5 == 4) text = text.Substring(0, text.Length - 1); 
      }
      else if ((text.Length - (text.Length / 5)) % 4 == 0) text += " ";
   }
   myTextbox.Text = text;
   myTextbox.SelectionStart = text.Length;
}

代码工作得很好。但是,如果我只将内部if语句更改为类似的内容(组合两个if语句):

if (e.Key == System.Windows.Input.Key.Back && text.Length % 5 == 4)
   text = text.Substring(0, text.Length - 1); 

当我有超过10个字符然后尝试删除时,代码停止工作,我无法删除第10个字符(空格)。

1 个答案:

答案 0 :(得分:1)

我认为这是因为,通过组合2个if语句,你会进入else if,从而增加一个空格

10 - (10/5) % 4等于0,所以添加一个空格。