在 Dart 中进行 null 检查后,无法将可空变量作为不可空变量传递

问题描述 投票:0回答:1

最小可重现代码:

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
条件进行了检查。

dart
1个回答
0
投票

变量

i
不是函数
bar
的局部变量。它是
foo
的参数。这意味着
foo
可以在
bar
运行时更改它,或者用它做其他恶作剧。

如果您将代码直接放入

foo
,那就可以了。如果您将
i
作为参数传递给
bar
,它就会起作用。也许使用不同的名称以避免混淆。

© www.soinside.com 2019 - 2024. All rights reserved.