相关疑难解决方法(0)

当= =为空值返回true时,为什么> =返回false?

我有两个int类型的变量?(或如果你愿意,可以为Nullable <int>).我想对两个变量进行大于或等于(> =)的比较,但事实证明,如果两个变量都为null,则返回false,而显然==运算符返回true.

有人可以向我解释为什么这是合乎逻辑的,因为> =运算符的语义定义包含单词"or"?

c# comparison nullable operators

78
推荐指数
3
解决办法
6696
查看次数

为什么C#编译器不会抛出null的逻辑比较?

我昨天和朋友一起吃午饭,他们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#不这样做?

c# logic

15
推荐指数
3
解决办法
1946
查看次数

可空类型比较

当我注意到这一点时,我正在对可空类型进行一些比较:

int? a = null;
int? b = null;
// a == b; ==> true
// a <= b; ==> false
Run Code Online (Sandbox Code Playgroud)

对我来说,<=运营商就相当于== OR <既然a == btrue的,我也除外truea <= b.

对你来说似乎也不合逻辑吗?

为什么<=>=运营商这样做?有什么特别的原因吗?

c#

6
推荐指数
0
解决办法
127
查看次数

标签 统计

c# ×3

comparison ×1

logic ×1

nullable ×1

operators ×1