if语句后面没有花括号会发生什么?

Elv*_*iel 5 c# if-statement curly-braces

我想了解这段代码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这个if语句有多行代码(包括for循环和两个returns),为什么它没有花括号?

Cem*_*for 9

代码等同于:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

当没有花括号时,只有下一个语句是if的一部分.对于for循环,它if是下一个语句,因此所有内容都包含在内.


Zer*_*ase 6

if语句只有一行代码.底部return false; 在if语句之外.

  • 这也是一个很好的例子,为什么很多人建议你总是包括大括号,即使你的`if`语句只有一行代码. (3认同)

Ser*_*rvy 5

如果这个IF语句有多行代码

它没有.第一个if陈述的主体只是:return false;.其余部分是在if身体结束后.