如果语句后面没有花括号,会发生什么?

本文关键字:什么 语句 如果 | 更新日期: 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。