2015-09-06 4 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 = ложь, и цикл в то время как будут проверять отрицание, чтобы увидеть, если он должен работать, не будет ли это логика (isParsed!):

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

Следовательно, цикл while никогда не будет работать. Но он работает. Позже я понял, что происходил чек:

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

но он говорит, что не совсем то, что происходит.

Может кто-нибудь объяснить, что здесь происходит?

ответ

4

Вы говорите это правильно: while (true). Это истинное булевское условие означает, что следующая (и первая) итерация будет выполняться.

!false == true 

Посмотри на документации MSDN, указав поведение времени цикла: https://msdn.microsoft.com/en-us/library/2aeyhxcd.aspx

2

При использовании логического значения в выражении вы проверяете для значения истины. При добавлении логического оператора NOT вы теперь ищете значение false.

while (false) 
1
bool isParsed = false; 

while(!isParsed) 

Loop должен работать, по крайней мере, один раз; Это правильное поведение, так как ваше состояние оценивается как true.

Смежные вопросы