2015-09-06 181 views
1
double number; 
bool isParsed = false; 

while(!isParsed) 
{ 
    Console.WriteLine("Enter the value"); 
    isParsed = double.TryParse(Console.ReadLine(), out number); 
    if(isParsed) 
    { 
     break; 
    } 
    Console.WriteLine("Invalid value"); 
} 

一位朋友和我正在研究這個代碼塊。我發現這部分了解:這個while循環發生了什麼?

bool isParsed = false; 

while(!isParsed) 

我認爲,如果isParsed = false,並且while循環將檢查否定,看它是否應該運行,這是不是可以邏輯(isParsed!):

while(!isParsed) => while(NOT(false)) => while (true)? 

因此,while循環永遠不會運行。但它確實運行。後來我明白檢查發生了:

while (!isParsed) => while((!isParsed) == true), 

但他說並不完全是這樣發生的。

有人可以解釋這裏發生了什麼嗎?

回答

2

使用時您所檢查的真值的表達式一個布爾值。添加邏輯NOT運算符時,您現在正在查找值爲false。

while (false) 
1
bool isParsed = false; 

while(!isParsed) 

環路應該運行至少一次;這是正確的行爲,因爲你的狀況正在評估爲真。