在 C# 中获得相同表达式的不同结果

Gre*_*jar 1 c#

从更改!= true== false我认为完全相同的结果时,我得到了不同的结果。

这是我的代码

User user = await GetUser(id);

if (user == null || user.Orders?.Any() != true)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果我更改为user.Orders?.Any() == true某些测试会返回不同的数据。为什么?

Que*_*cus 9

因为user.Orders?.Any()bool?类型,因为'?' 命令后。所以,如果user.Ordersnull,那么结果user.Orders?.Any()将是null== true将是错误的,而!= false会是真实的