void foo(int? i) {
bar() {
if (i != null) {
// Error in both lines:
baz(i); // Line-1
i++; // Line-2
}
}
}
void baz(int i) {}
为什么两行都有错误,特别是
Line-1
?如果我注释掉 Line-2
,Line-1
中的错误就会消失。
注意:我不是在寻找解决方案,而是解释为什么
Line-1
中出现错误,而 null
已经使用 if
条件进行了检查。
变量
i
不是函数bar
的局部变量。它是foo
的参数。这意味着 foo
可以在 bar
运行时更改它,或者用它做其他恶作剧。
如果您将代码直接放入
foo
,那就可以了。如果您将 i
作为参数传递给 bar
,它就会起作用。也许使用不同的名称以避免混淆。