首页 新闻 搜索 专区 学院

C# foreach遍历之后,判断出错?

0
[已关闭问题] 关闭于 2017-03-27 22:10

如代码 :    foreach (OperationList operationlist1 in resultList)
                {
                    //    MessageBox.Show(operationlist1.ShowMessage);
                    if (operationlist1.ShowMessage.Contains(buffer))
                    {
                        this.dataGridView1.Rows[i].Cells[2].Value = buffer;
                        this.dataGridView1.Rows[i].Cells[3].Value = "pass";
                        nteststatus = int.Parse(operationlist1.TestSeq);
                        Thread.Sleep(1000);
                        break;
                    }
                    else
                    {
                   this.dataGridView1.Rows[i].Cells[2].Value = buffer;
                    this.dataGridView1.Rows[i].Cells[3].Value = "fail";
                     nteststatus = int.Parse(operationlist1.TestSeq);
                    Thread.Sleep(100);
                    }
                }

   buffer:串口会有返回值,按照顺序假设buffer1,buffer2,buffer3。。。。。

   operationlist1.ShowMessage:初始化存在xml文件里(其实相当于buffer的值),也是按照顺序排:ShowMessage1,ShowMessage2,ShowMessage3(分别相对应buffer1,buffer2,buffer3)

  1. 当串口有返回值buffer1的时候,  foreach会遍历,当ShowMessage.Contains(buffer1),这个时候语句最后执行break,跳出else。执行下一条指令,这结果是对的。
  2. 串口有返回值buffer2的时候,foreach再次遍历,这里就很明显,第一次遍历的时候,ShowMessage.Contains(buffer2)这个条件不成立。(因为第一次遍历的时候,ShowMessage是ShowMessage1,不是ShowMessage2)那么,就会执行else语句,然后判断fail。
  3. 需求:既然第一遍历已经判断ShowMessage.Contains(buffer1)了,第二次遍历就不应该再去判断了。那怎么解决呢?
某的主页 | 菜鸟二级 | 园豆:278
提问于:2017-03-21 19:05
< >
分享
所有回答(1)
0

把break删掉,

陈夏松 | 园豆:145 (初学一级) | 2017-03-22 13:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册