在我的回答中:C# Lock syntax - 2 questions中,LukeH指出try...catch...(finally)
语句需要花括号。
我找到了关于为什么的答案,在这里找到(为什么 try..catch 块需要大括号?)非常有趣。
我想知道更多需要花括号而不是良好实践等的示例,最好是使用代码片段和解释原因。
在我的回答中:C# Lock syntax - 2 questions中,LukeH指出try...catch...(finally)
语句需要花括号。
我找到了关于为什么的答案,在这里找到(为什么 try..catch 块需要大括号?)非常有趣。
我想知道更多需要花括号而不是良好实践等的示例,最好是使用代码片段和解释原因。
围绕一个方法体。
// not allowed:
int Inc(int x)
return x+1;
为什么并不那么容易,看起来老式 C 比 C++/C# 更需要它。
更多关于为什么部分,在(非常)旧的 C 中你会写
int Sum()
int a, b; // parameters, very informal
{
int s; // local var
...
}
所以这个古老的语法需要大括号。在所有基于 C 的语言中,假设在某些情况下是可能的,没有人认为将它们设为可选是有道理的。
您必须在 and 中使用大括号或圆括号,具体取决于您将它们视为运算符还是语句:checked
unchecked
// legal operator
int y = checked(x * 2);
// legal statement
unchecked
{
if ((a * b) > c)
{
DoSomething();
}
}
// illegal operator
int y = checked x * 2;
// illegal statement
unchecked
if ((a * b) > c)
DoSomething();
语言的某些部分需要存在大括号。例如,当您启动一个方法时,您必须打开和关闭大括号以将其标识为代码块。在函数内部,某些语言特性(如循环、条件语句等)也接受大括号,尽管在某些情况下它们不是必需的。例如:
if (someValue == true)
doSomething();
在这种情况下,不需要大括号,但是您可以用大括号包围该语句,因为您只有一个语句将在 if 检查之后执行,但是如果您想在 if 中执行多个语句,则需要使用大括号。例如,
if (someValue == true)
{
doSomething();
doSomeMoreWork();
}
不允许尝试这样的事情:
if (someValue == true)
doSomething();
doSomeMore();
else
doWork2();
int i = 1 + 2;
在这种情况下编译器会抱怨。
在以下循环中可以最好地看到该问题:
while(i < 10)
doSomeWork();
i++;
在这里,您会期望 i 增加,但这永远不会发生。基本上这个循环和这个循环是一样的:
while(i < 10)
{
doSomeWork();
}
i++;
块内的语句将无限执行,我永远不会增加。在这种情况下,编写此语句的正确方法是:
while(i < 10)
{
doSomeWork();
i++;
}
现在你有一个正常工作的声明。无论正在执行的语句数量如何,我都喜欢一直使用大括号。这样做的原因是迟早我可能需要在 if 语句或 for 或 foreach 循环中添加更多工作。这只是一个很好的做法。
类/结构/接口声明
类 X { int _myval }