最近在之前的一个项目中,我发现了VB.NET和C#之间的一个特殊区别。
考虑以下C#表达式:
null <= 2
此表达式的计算结果为 False ,这正是我所期望的。 然后是相应的VB.NET表达式:
Nothing <= 2
我很惊讶地发现这个表达式实际上是评估为 True
这似乎是两种语言之间相当基本的设计决定,它确实让我感到震惊。
有人能告诉我原因吗? 是null和Nothing是一样的吗? 如果是这样,他们为什么表现不同?
答案 0 :(得分:30)
Nothing
计算为给定类型的默认值。 (有关详细信息,请参阅this link。)
对于整数比较(编译器将从右手操作数假设),Nothing
将为0
。出于更明显的原因0 <= 2
是正确的: - )