如果语句后面没有花括号,会发生什么?
本文关键字:什么 语句 如果 | 更新日期: 2023-09-27 18:11:47
我试图理解这个代码片段:
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
循环),为什么它没有花括号?
代码相当于:
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
是下一个语句,所以它包含了所有内容。
if
语句只有一行代码。底部return false
;在if语句之外
如果if语句有多于一行的代码
它不。第一个if
语句的主体只有:return false;
。其余部分在if
正文的末尾。
如果If语句中没有任何花括号,则If语句下只考虑一条语句。
在本例中,只执行一条语句:"return false;"
在c#中,花括号是可选的,但只适用于第一行代码。
表示如果语句没有大括号,则只执行if条件(语句体)后面的那行代码。其他所有内容都在语句体之外,因此不会执行。
与if else:
相同if(SomeCompare())
return false;
else
return true;
这与:
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;
}
}
else根本不需要,因为如果if语句的计算结果为true
IF
语句不超过一行代码。如果IF
语句有其他代码,它们永远不会执行,因为代码总是在IF
之后的第一行返回false。