-1
我试图退出Dowhile循环,当if条件在循环内满足时。使用Dowhile循环的原因是tagIDNumber有时会使用垃圾值。这里是我的代码的意图C#在while循环内退出while循环for if条件
- 第一次时启动的应用程序和功能的标签识别()被调用,previoustagIDNumber将是空字符串,tagIDNumber可以是“NO TAG”,实际值或“重启”的应用再次。
- 当tagIDNumber第一次获得实际值时,它将被存储在previoustagIDNumber中。
- dowhile循环用于执行函数Identify(),直到tagIDNumber == previoustagIDNumber。
但是tagIDNumber也可以是空字符串,在这种情况下,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";
}
}
}
你'return'有效退出循环,所以'break'永远不会被调用。 –
“Identify”中是否有某些内容需要您在检查“tagIDNumber为空之前调用它两次? – Abion47
'Globals.previoustagIDNumber'您可能想重新考虑这一点。全局变量很少是一个好主意。 –