任何构造if都可以使用或不使用花括号来编写。例如:
bool j = true;
if(j==true)
MessageBox.Show("That's true")
或者像这样:
bool j = true;
if(j==true)
{
MessageBox.Show("That's true")
}
对话只是if一个动作的构造。因此有几个问题:
- 编译器会忽略这些括号吗?
- 如果没有,程序是否关注它们?
- 这些括号是否会影响程序的性能(即使是非常微不足道的)?
参照规范
为了
if statement对于循环。例如同时:
如您所见,规范级别没有括号。
反过来
embedded_statement,它是这样展开的:在这种情况下,括号是
block因此,我们可以说:
编译器不会忽略这些括号,只是让我们要么写,要么不写。粗略地说,当它把程序的文本解析成一棵抽象语法树时,那么无论有无括号,得到的树的结构都是一样的。
因此,即使在还不完全是程序的抽象树级别,这些括号也不再存在。因此,不管代码是如何执行的,我们可以有把握地说程序不会关注这些括号,它们不会影响程序执行时间。
更新程序
在调试配置中,msil 中的 nop 代码和本机代码中的 nop 指令被添加到每个花括号中。如评论中所述,这样做是为了便于调试。