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

时间:2013-05-01 18:36:40

标签: 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;
    }
}

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

7 个答案:

答案 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;