C# 中 IF ELSE 语句中花括号的规则是什么

jit*_*bug -2 c# if-statement curly-braces

我正在学习 C# 初学者课程,试图了解如何在 IF ELSE 语句中使用花括号。我发现如果我在 IF 或 ELSE 正文中有一个语句,我不需要卷曲,如果我有 2 个或更多语句,那么我需要卷曲。但是 > 并非总是如此!。我正在使用 Visual Studio,有时它编译时没有卷曲,有时我需要将它们放入。这太令人抓狂了。

正如您在此处看到的,控制台上打印的 2 行语句很好。(忽略其他东西)。没有卷发。

2 条没有花括号的语句

现在,我正在尝试在第二天进行编译,它需要大括号(尽管现在是 IF ELSE 的 IF 部分,没关系,我昨天使用 2 个语句没有问题)。

IF 语句错误

在这里使用大括号,错误消失了。

卷发

这令人沮丧,因为有时 VS 需要卷曲,有时则不需要。

我相信,如果正文中只有一个语句,我不需要花括号,如果正文中有 2 个或更多语句,我需要花括号来表明大括号中的所有内容都得到执行。

但是 Visual Studio 19 似乎每天都在改变主意。我一定要疯了。

小智 6

如果你注释第 31 和 32 行,它不会给你编译错误。

//this is correct format.
if(true)
    doX();
else 
    doY();

//this is not.

if(true)
    doX();
Console.WriteLine(); <- this is not part of if statement. 
else doY();


Run Code Online (Sandbox Code Playgroud)

这里 Console.WriteLine() 被认为是一个独立的语句。因此, else 的“if”丢失了。

当你把花括号它认为是一个单一的块 -


//this is correct format.

if(true)
{
    doX();
    Console.WriteLine();  
}
else doY();
Run Code Online (Sandbox Code Playgroud)