空分号和左闭大括号正常工作

本文关键字:常工作 工作 | 更新日期: 2023-09-27 18:09:37

我有控制台应用程序项目分配给我支持,所以我决定在某个类中进行代码审查,当我进行代码审查时,我跑到只包含一个分号的行,另一行是一个空的开-关大括号,所以我的期望是编译器会抛出一个错误, 所以我尝试运行控制台应用程序,但它工作正常并且没有错误的迹象,我认为我的编译器有问题,所以我决定重新安装它,但控制台应用程序仍然工作正常,所以我决定创建一个新方法来测试分号和大括号我也尝试制作一个嵌套的大括号,里面有一个Console.WriteLine(),它令人惊讶地工作。谁能解释为什么会发生这种情况,或者只有我和我的编译器?

static void TestMethod()
{
    ;
    { }
    ; { }
    { ; }
    {  };
    {
        {
            {
                {
                    {
                        {
                            {
                                Console.WriteLine("Hello, World!");
                                Console.Read(); 
                            }
                        }
                    }
                }
            }
        }
    }
}

空分号和左闭大括号正常工作

C# 中允许使用空语句。

当没有要执行的操作时,使用空语句 需要语句的上下文。

空语句的执行只是将控制权转移到最后 声明的要点。因此,空语句的终点是 如果空语句可访问,则可访问。

另请注意块的定义。块内的语句是可选的。

块由可选的语句列表组成(第 8.2.1 节(, 用大括号括起来。如果省略语句列表,则块为 说是空的。

另请参阅Eric Lippert对此"功能"的评论。(正如@Kobi在上面的评论中提到的。

注意:人们经常引用诸如此代码之类的示例作为空语句的理由:

while (readNextChar() == ' ') // Skip spaces
    ;

或者可怕的:

while (readNextChar() == ' '); // Skip spaces

但就我个人而言,如果必须写成:

while (readNextChar() == ' ')
{ 
    // Skip spaces
}

但是,这确实说明了您可能需要空块的原因(我没有问题(。