-1

对于以下代码:

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

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

4

1 回答 1

1

布尔运算是惰性的,这意味着如果您评估a || band ais true,则b甚至不评估。

在您的情况下,如果b = (n1 != null && n2 != null)已评估,则表示a = (n1 == null) = false,这意味着n1 != null检查n1 != null将始终为真。

于 2021-03-20T08:03:08.543 回答