24

C# 将如何编译它?

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

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

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

还是只需要下一行?

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

6 回答 6

60

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

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,而且我遇到的大多数编码约定都采用相同的方法。

于 2010-12-03T13:27:09.510 回答
9
if (info == 8)
{
    info = 4;
}
otherStuff();
于 2010-12-03T13:17:16.327 回答
4

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

于 2010-12-03T13:17:14.590 回答
1

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

于 2010-12-03T13:17:47.680 回答
1

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

所以

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

将与

if( true )
{
    method1();
}
method2();
于 2010-12-03T14:04:21.607 回答
0

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

于 2010-12-03T13:17:35.717 回答