如何从定义中分离出int数组的声明?对不起基本问题。我基本上是从c / c ++背景。
int [] res;
switch (something)
{
case <something>:
res = somefunction ()
break;
{
if ( res == null ) ==>> problem is here. // 'res' might not have been initialized.
我如何处理这个问题,最好的方法是什么?
答案 0 :(得分:6)
正如提到的其他答案,你可以做到
int [] res = null;
但我经常更喜欢确保switch
处理所有情况:
int [] res; // Leave it uninitialized
// ...
switch (something) // Set `res` in every branch
{
case <something>:
res = somefunction();
break;
// ...
default: // Including the default
res = null;
break;
}
这样,如果你添加一个新条件,你必须有意识地决定你应该用res
做什么(因为如果你什么都不做,编译器会提醒你)。
pre-init和“处理所有路径”方法都有用例。
答案 1 :(得分:4)
当数组变量(或者就此而言,任何变量)是局部变量时,必须给它一个初始值,因为局部变量没有默认值。
int [] res = null;
这样即使你的case语句没有被执行它也会有一个值。
答案 2 :(得分:3)
所以,初始化
int [] res = null;