C# 没什么空-或者它是空的?
最近在上一个项目中,我遇到了VB.NET和C#之间的一个特殊区别 考虑以下C#表达式:C# 没什么空-或者它是空的?,c#,.net,vb.net,clr,C#,.net,Vb.net,Clr,最近在上一个项目中,我遇到了VB.NET和C#之间的一个特殊区别 考虑以下C#表达式: null <= 2 VB中的nullNothing计算为给定类型的默认值。(有关详细信息,请参阅。) 对于整数比较(编译器将从右侧操作数中假定),Nothing因此将是00还值得一提的是,当与is和IsNot运算符结合使用时,Nothing也用于空检查。对于completelyness:编译器如何处理C#代码(object)null不允许与整数比较,Int32不能为null?我在寻找答案的时候你打了我
null <= 2
VB中的
nullNothing
计算为给定类型的默认值。(有关详细信息,请参阅。)
对于整数比较(编译器将从右侧操作数中假定),Nothing
因此将是0
<代码>0还值得一提的是,当与is和IsNot运算符结合使用时,Nothing也用于空检查。对于completelyness:编译器如何处理C#代码(object)null
不允许与整数比较,Int32
不能为null?我在寻找答案的时候你打了我。你也得到了同样的链接:P@StefanSteinegger:int
可以隐式转换为int?
。请参阅:“从普通类型到可空类型的转换是隐式的。”因此,代码null@Wayne:MSDN search的第一个结果-可能是我的浏览器快捷方式将您带到了帖子;-)null在LINQPAD中尝试一个表达式-想象null实际上是一个int?谁的值恰好为空。相关问题(尽管不完全相同):随着所有这些奇怪的事情的发生,有时我想,如果我们在<代码> int i/cDe>中简单地声明一个整数,让它成为内存中的任何东西,而不试图给它默认值,或者像C++一样,将它与<代码> null <代码>进行比较,我们会感到不舒服。
Nothing <= 2