我昨天和朋友一起吃午饭,他们null在C#中抱怨.他说那null是不合逻辑的.我决定测试他的说法,所以我测试了一些简单的逻辑命题:
Console.WriteLine(null == null); //True
//Console.WriteLine(null == !!null); //BOOM
Console.WriteLine(10 >= null); //False
Console.WriteLine(10 <= null); //False
Console.WriteLine(!(10 >= null)); //True
Console.WriteLine(!(10 <= null)); //True
Run Code Online (Sandbox Code Playgroud)
检查平等似乎很简单,这就是我所期望的.然而,更多/更少的陈述是逻辑矛盾,我觉得这真的很混乱!这些不应该抛出?否定操作会像您期望的那样抛出.
如果我尝试null在Ruby或Python中运行比较(除了相等),我会得到一个类型错误:"无法将数字与nil进行比较".为什么C#不这样做?