示例代码:
int hour = 0;
bool saveData = true;
if(hour > 0) doSomeMethod(); saveData = false;
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,saveData将始终设置为false,但不会触发doSomeMethod().我认为编译器将doSomeMethod()之后的分号视为移动到下一个语句的指示符,忽略它与if语句位于同一行.这种行为的原因是什么?
一个if语句可以包含一个单一的语句,或代码块.一旦编译器发现;它结束了if.
您上面的代码相当于:
if (hour > 0)
    doSomeMethod();
saveData = false;
Run Code Online (Sandbox Code Playgroud)
你想要的是:
if (hour > 0)
{
    doSomeMethod();
    saveData = false;
}
Run Code Online (Sandbox Code Playgroud)
要么:
if (hour > 0) { doSomeMethod(); saveData = false; }
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           529 次  |  
        
|   最近记录:  |