如果我的if语句不起作用,为什么会起作用?

时间:2019-03-11 22:10:28

标签: c# html asp.net

我在asp.net中工作,我对html和c#不太熟悉,因为教授在上课之前确实不会花费太多。.我确实知道它与我非常熟悉的java非常相似所以我不确定我的错误是什么

我有一个if事件的if语句,用于检查复选框列表的选定索引,以确保选择了正确的答案。它的工作原理是正确的,但是由于某种原因,无论何时选择第一个索引,它都会使它正确,我不理解。所以实际上我的问题是选择第一个索引会导致if语句出现问题

这是我用于按钮事件处理程序的代码。

if (DropDownList1.SelectedIndex.Equals(1)) { 
    LabelResult1.Text = "Question 1 Correct"; 
}
else { 
    LabelResult1.Text = "Question 1 Incorrect"; 
}

if (RadioButtonList1.SelectedIndex.Equals(1)) { 
    LabelResult2.Text = "Question 2 Correct";
}
else { 
    LabelResult2.Text = "Question 2 Incorrect"; 
}

if (CheckBoxList1.SelectedIndex.Equals(0&2&3)) { 
    LabelResult3.Text = "Question 3 Correct"; 
}
else { 
    LabelResult3.Text = "Question 3 Incorrect"; 
}

//write if statement to create image for fireworks
if(DropDownList1.SelectedIndex.Equals(1)&&RadioButtonList1.SelectedIndex.Equals(1)&&CheckBoxList1.SelectedIndex.Equals(0 & 2 & 3)) {
    ImageFireworks.ImageUrl = "Images/giphy.gif";
}

我也有它,因此如果所有问题的回答正确,就会显示gif。与if语句相同,每次选择复选框的0索引时,都会出现相同的问题

2 个答案:

答案 0 :(得分:3)

CheckBoxList1.SelectedIndex.Equals(0&2&3)在索引= 0时将为true,因为0&2&3为零。这是因为在c#中& operator是按位AND。

  • 0 = b00000000
  • 2 = b00000010
  • 3 = b00000011

这三个与二进制AND运算符结合在一起(就像您所做的那样)将得出0。

答案 1 :(得分:-1)

单个&是按位AND运算符,因此0 & 2 & 3的值为0,这使表达式的工作方式类似于SelectedIndex.Equals(0)。为了检查多个选定的项目,您必须检查每个项目的.Selected属性,例如:

CheckBoxList1.Items[0].Selected && CheckBoxList1.Items[2].Selected && CheckBoxList1.Items[3].Selected