我正在尝试理解这段代码:
class Worker
{
public bool DoThisJob(string job, int numberOfShifts)
{
if (!String.IsNullOrEmpty(currentJob))
return false;
for (int i = 0; i < jobsICanDo.Length; i++)
if (jobsICanDo[i] == job)
{
currentJob = job;
this.shiftsToWork = numberOfShifts;
shiftsWorked = 0;
return true;
}
return false;
}
}
如果这个if
语句有多行代码(包括for
循环和两个return
s),为什么它没有花括号?
答案 0 :(得分:8)
代码等同于:
class Worker
{
public bool DoThisJob(string job, int numberOfShifts)
{
if (!String.IsNullOrEmpty(currentJob))
{
return false;
}
for (int i = 0; i < jobsICanDo.Length; i++)
{
if (jobsICanDo[i] == job)
{
currentJob = job;
this.shiftsToWork = numberOfShifts;
shiftsWorked = 0;
return true;
}
}
return false;
}
}
当没有花括号时,只有下一个语句是if的一部分。对于for
循环,if
是下一个语句,因此所有内容都包含在其中。
答案 1 :(得分:6)
if
语句只有一行代码。底部return false
;在if语句之外。
答案 2 :(得分:5)
如果这个IF语句有多行代码
没有。第一个if
语句的正文仅为:return false;
。其余部分是在if
身体结束之后。
答案 3 :(得分:4)
如果If语句没有任何大括号,则在If语句下只会考虑一个语句。
在此示例中,只会执行一个语句:“return false;”
答案 4 :(得分:2)
这与:
相同public bool DoThisJob(string job, int numberOfShifts)
{
if (!String.IsNullOrEmpty(currentJob))
{
return false;
}
else
{
for (int i = 0; i < jobsICanDo.Length; i++)
if (jobsICanDo[i] == job)
{
currentJob = job;
this.shiftsToWork = numberOfShifts;
shiftsWorked = 0;
return true;
}
return false;
}
}
其他根本不需要,因为如果if语句的计算结果为true,它将不会因返回而被执行
答案 5 :(得分:1)
IF
语句不超过一行代码。如果其他代码用于IF
语句,则它们永远不会执行,因为代码总是在IF
之后的第一行返回false。
答案 6 :(得分:1)
在C#花括号中是可选的,但仅适用于第一行代码。
这意味着如果语句没有大括号,则只执行if条件(语句体)之后的代码行。其他所有内容都不在声明正文之内,因此不会被执行。
与if else相同:
if(SomeCompare())
return false;
else
return true;