Public Function Run() As Boolean Return query(if(CustomClass IsNot nothing,CustomClass.ID,nothing))End FunctionPublic Function query(second As Integer?) As Boolean ... If second.HasValue Then 'value = 0 ! Else 'some query End If ...End Function解决方法 这是一个VB.NET的怪异.
Nothing
不仅意味着 null
(C#)而且意味着 default
(C#).因此它将返回给定类型的默认值.由于这个原因,您甚至可以将nothing赋值给Integer变量(或任何其他引用或值类型). 在这种情况下,编译器决定nothing意味着Integer的默认值为0.为什么?因为他需要找到属于Int32属性的implicit conversion.
如果你想要一个Nullable(Of Int32)使用:
Return query(if(CustomClass IsNot nothing,New Int32?()))
因为我提到了C#,如果你在那里尝试相同,你将得到一个编译器错误,即null和int之间没有隐式转换.在VB.NET中有一个,默认值为0.
总结以上是内存溢出为你收集整理的vb.net – HasValue给出值0而不是Nothing全部内容,希望文章能够帮你解决vb.net – HasValue给出值0而不是Nothing所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)