【问题标题】:Does C# support if codeblocks without braces?如果没有大括号的代码块,C# 是否支持?
【发布时间】:2011-05-19 18:05:30
【问题描述】:

C# 将如何编译它?

if (info == 8)
    info = 4;
otherStuff();

它会在代码块中包含后续行吗?

if (info == 8)
{
    info = 4;
    otherStuff();
}

还是只需要下一行?

if (info == 8)
{
    info = 4;
}
otherStuff();

【问题讨论】:

    标签: c# compilation codeblocks conditional-statements


    【解决方案1】:

    它像 C/C++ 和 Java 一样工作。没有花括号,它只包含下一条语句。

    【讨论】:

    • 你相信用大括号,它也只运行下一条语句吗?
    【解决方案2】:
    if (info == 8)
    {
        info = 4;
    }
    otherStuff();
    

    【讨论】:

      【解决方案3】:

      它只占用下一行,因此您的示例将编译为第二个可能的结果示例。

      【讨论】:

        【解决方案4】:

        是的,它支持不带大括号的 if 代码块,只有 if 之后的第一条语句才会包含在 if 块中,就像在第二个示例中一样

        【讨论】:

          【解决方案5】:

          是的,它支持它——但它需要下一个语句,而不是下一个。比如:

          int a = 0;
          int b = 0;
          if (someCondition) a = 1; b = 1;
          int c = 2;
          

          相当于:

          int a = 0;
          int b = 0;
          if (someCondition)
          {
              a = 1;
          }
          b = 1;
          int c = 2;
          

          就我个人而言,我总是在 if 语句的主体周围加上大括号,而且我遇到的大多数编码约定都采用相同的方法。

          【讨论】:

            【解决方案6】:

            在 C# 中,if 语句基于括号运行命令。如果没有给出括号,则如果语句为真,它将运行下一个命令,然后运行之后的命令。如果条件为假,则继续执行下一个命令

            因此

            if( true )
                method1();
            method2();
            

            将与

            相同
            if( true )
            {
                method1();
            }
            method2();
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-18
              • 1970-01-01
              相关资源
              最近更新 更多