while(thingA is true)
{
}
if(thingA is not true)
{
make thingA true
then back to looping
}
我的問題是,如果循環是真的,那將不斷循環,但如果它不是我將通過aonther代碼,使其真實,在那之後我又希望它循環。我能做到這一點!?一個問題有關循環
while(thingA is true)
{
}
if(thingA is not true)
{
make thingA true
then back to looping
}
我的問題是,如果循環是真的,那將不斷循環,但如果它不是我將通過aonther代碼,使其真實,在那之後我又希望它循環。我能做到這一點!?一個問題有關循環
您提供的代碼塊實際上是一個無限循環。原因是因爲thingA
保持true
到while
循環,直到它的計算結果爲false
並跳出循環。然後,它是由if
語句來檢查,看它是否是false
檢查 - 它必須是,或while
循環就不會被打破。然後你循環更多一些。
只需檢查thingA
在無限循環內是否爲假,並執行您的特殊情況邏輯。
我的問題是,如果你想循環,直到某些東西是假的,那麼一旦它的假設置爲真並重新循環,爲什麼檢查條件呢?爲什麼不只是:
while (true)
{
if (thingA is not true)
{
// do whatever you want
}
}
我的觀點只是,如果你想要做的就是讓它真正和重新循環,爲什麼要停止循環呢?
無論thingA
的值如何(您總是會回到循環中),您所描述的將永遠循環。如果您需要的時候thingA
的狀態發生改變,那麼你只需要採取一些行動:
while (1)
{
if (!thingA) { /* Some action */ }
...
}
而不是重新安排您的代碼在同一功能,嘗試將通用代碼移動到一個單獨的功能。這將使你的代碼更容易理解和流動更易於理解。
在你的情況,你可能想是這樣的:
void MyLoopFunction()
{
bool MyCheckVariable = true;
while (MyCheckVariable)
{
...
}
}
void SomeOtherFunction()
{
// Keep executing until infinity
while (true)
{
MyLoopFunction();
// Fell out of the loop, do something else and retry
...
}
}
正如上面寫的你有一個無限循環! – 2011-02-08 20:05:20