我今天看到了一些关于此的话:
aClass something;
while (condition) {
something = new aClass();
...
}
while (condition) {
aClass something = new aClass();
...
}
它说你应该使用第二个而不是第一个。这是真的,如果是的话,为什么?
答案 0 :(得分:4)
您的第一个示例将无用变量泄漏到外部范围。
答案 1 :(得分:1)
您应该使用第二个示例,除非在while循环完成后需要使用该对象。如果您不需要外部作用域中的变量,最好将其声明在将使用它的最窄范围内(在循环内)。这简化了必须理解它的维护程序员的代码。
答案 2 :(得分:1)
第二种方法仅将something
变量保留在特定循环迭代的范围内。
如果要在循环外使用对象和/或保持迭代之间保存的更改,则必须使用第一种方法。
此外,第二种方法没有定义多个变量,编译器通常会以确保只定义一个变量的方式对其进行优化。