在关于操作栏的书中给出的android代码示例中,给出的示例如下:
MenuItem menu1 = menu.add(0, 0, 0, "Item 1");
{
menu1.setIcon(R.drawable.ic_launcher);
menu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
如果在分号后使用花括号怎么样?显然有一些我不明白的概念。
答案 0 :(得分:17)
在这种情况下,它们是完全可选的,完全没有副作用。在您的示例中,它的唯一目的是通过打算属于控件的属性赋值来使代码更具可读性。没有大括号,你也可以这样做。但是,如果您使用工具重新格式化代码,缩进可能会消失。
但是,如果您有一个方法并且在其中放置了{},则可以创建一个新的变量范围:
void someMethod() {
{
int x = 1;
}
// no x defined here
{
// no x here, so we may define a new one
string x = "Hello";
}
}
您可以在方法中的任何位置启动新范围,您可以在其中启动语句(变量声明,方法调用,循环等)。
注意:例如,当你有一个if语句时,你也可以用这个大括号创建一个新的变量范围。
void someMethod() {
if (someThing) {
int x = 1;
}
// no x defined here
if (somethingElse) {
// no x here, so we may define a new one
string x = "Hello";
}
}
对于while,for,try,catch等同样如此。如果您考虑它,即使方法体的大括号也以这种方式工作:它们创建一个新的范围,它是类范围之上的“层”。
答案 1 :(得分:15)
它被称为匿名代码块,它们应该是restrict the variable scope
。
答案 2 :(得分:0)
这些是初始化块。
我认为这不是初始化块的正确用法。 除了您生成的示例之外,这些块仅用于初始化目的。 Click Here详细视图。