-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'您可能想重新考慮這一點。全局變量很少是一個好主意。 –