为while循环中的if条件退出while循环

本文关键字:while 循环 条件 退出 if | 更新日期: 2023-09-27 18:15:51

我试图退出Dowhile循环,当循环内满足if条件时。使用Dowhile循环的原因是tagIDNumber有时会接受垃圾值。下面是我的意图代码

  1. 第一次启动应用程序并调用TagID()函数时,previstagidnumber将为空字符串,tagIDNumber可以为"NO TAG",实际值或"重新启动"应用程序。
  2. 当tagIDNumber第一次获得实际值时,它将存储在previoustagIDNumber中。
  3. dowhile循环用于执行函数Identify(),直到tagIDNumber == previoustagIDNumber。

但是tagIDNumber也可以是空字符串,在这种情况下do while循环必须退出。下面的代码似乎不能在满足if条件时退出dowhile循环。

public string TagID()
    {
        SetAttenuation(Attenuation);
        StringBuilder tagIDNumber = new StringBuilder(); // TagID 
        int TagType;
        TagType = Identify(tagIDNumber, SEGOTAGTYPE);
        // When the application is launched first time, previous Tag ID value is empty
        if (Globals.previoustagIDNumber != "")
        {
            if (tagIDNumber.ToString().ToUpper() != Globals.previoustagIDNumber)
            {
                do
                {
                    tagIDNumber.Clear();
                    TagType = Identify(tagIDNumber, SEGOTAGTYPE);
                    if (tagIDNumber.ToString()  == "")
                    {
                        return "NO TAG";
                        break;
                    }
                }
                while (tagIDNumber.ToString().ToUpper() != Globals.previoustagIDNumber);
            }
            return tagIDNumber.ToString().ToUpper();
        }
        else
        {
            if (TagType == SEGOTAGTYPE)
            {
                if (tagIDNumber.ToString() == "")
                {
                    return "NO TAG";
                }
                else
                {
                    return tagIDNumber.ToString().ToUpper();
                }
            }
            else
            {
                return "RESTART";
            }
        }           
    }

为while循环中的if条件退出while循环

您可以使用一个变量来指示do…循环退出:

                bool getOut=false;
                do
                {
                    tagIDNumber.Clear();
                    TagType = Identify(tagIDNumber, SEGOTAGTYPE);
                    if (tagIDNumber.ToString()  == "")
                       getOut=true;
                }
                while (tagIDNumber.ToString().ToUpper() != Globals.previoustagIDNumber & getOut==false);