1

如果你写一个类并且你使用这样的东西

...
int x;
{ x = 2; }
...

这将是一个初始化块,对吗?

那么如何使用花括号来指定范围,以便它们像任何其他代码一样执行?基本上,它们不是构造函数的一部分。

前任

如果您要在 switch 语句中使用块,这会像初始化块一样执行吗?

    switch(...)
    {
    case :
    { // this right here how does the compiler know the difference?
    ...
    break;
    }
    }
4

1 回答 1

2

初始化块仅适用于类范围内且前面没有函数原型的块(即不是函数体的块)。

在函数体内,您创建的任何块都将引入作用域,但不会被解释为初始化。

例子:

public class NameOfClass {
    {
        // This is an initalization block
    }

    AccessModifier ReturnType nameOfFunction(ParamType nameOfParam) {
        // This is a function body and is not an initialization

        {
          // This introduces scope, is not an initialization
        }
    }
}
于 2011-10-16T04:02:55.280 回答