一行if语句行为的解释
本文关键字:解释 if 语句 一行 | 更新日期: 2023-09-27 18:23:51
示例代码:
int hour = 0;
bool saveData = true;
if(hour > 0) doSomeMethod(); saveData = false;
在上面的代码中,saveData将始终设置为false,但doSomeMethod()不会被激发。我认为编译器将doSomeMethod()后面的分号视为移动到下一个语句的指示符,忽略了它与if语句在同一行。这种行为的原因是什么?
if
语句可以包含单个语句,也可以包含代码块。一旦编译器找到;
,它就结束if
。
你上面的代码相当于:
if (hour > 0)
doSomeMethod();
saveData = false;
你想要的是:
if (hour > 0)
{
doSomeMethod();
saveData = false;
}
或:
if (hour > 0) { doSomeMethod(); saveData = false; }
C#忽略换行符,就像C及其其他子代一样,并使用;
分隔语句。你的代码完全等同于
int hour = 0;
bool saveData = true;
if(hour > 0)
doSomeMethod();
saveData = false;
顺便说一句,哪种风格更好。
在C#中,if语句可以是:
if(expression) statement;
或
if(expression) { statement1; ... statementN; }
你的代码缺少大括号,所以你的猜测是正确的。