飞镖:unnecessary_null_comparision

dart: unnecessary_null_comparision

对于以下代码:

bool assertTest(int? n1, int? n2) {
  return (n1 == null) || (n1 != null && n2 != null);
}

n1 != null 处有一条警告说 The operand can't be null, so the condition is always true. 为什么会出现这个警告? n1 显然可以为空。

布尔运算是惰性的,这意味着如果你计算 a || b 并且 atrue,那么 b 甚至不会被计算。

在您的情况下,如果对 b = (n1 != null && n2 != null) 求值,则表示 a = (n1 == null) = false,即 n1 != null,因此检查 n1 != null 将始终为真。