VB.NET中值1被判定为VBNull的原因咨询
VB.NET代码返回异常结果的原因
你遇到的现象核心在于对vbNull常量的误解和误用,以下是具体分析:
vbNull的真实属性:它是VB6遗留的兼容性常量,在VB.NET中属于Microsoft.VisualBasic.Constants类,实际值为0,类型为Object。按正常逻辑,只有当数值等于0时,和vbNull的比较才会成立,输出"Null";数值为1或2时都应输出"Not Null"。你描述现象的可能原因:
- 你大概率在代码中自定义了同名的
vbNull常量,将其值设为1,导致当目标数值为1时比较成立,输出"Null";数值为2时不成立,输出"Not Null"。 - 若开启了
Option Strict Off,VB.NET的隐式类型转换可能出现非预期行为,干扰了比较结果。
- 你大概率在代码中自定义了同名的
正确的空值判断方式:
- 判断字符串是否为空:使用
String.IsNullOrEmpty(MyStr)或String.IsNullOrWhiteSpace(MyStr)。 - 判断Integer是否为默认值:直接与
0比较。 - 处理数据库空值:使用
DBNull.Value。
- 判断字符串是否为空:使用
另外,第二段代码dim Myval as integer="1"存在语法错误,VB.NET不允许直接将字符串赋值给Integer类型,需显式转换,比如Dim Myval As Integer = Integer.Parse("1")。
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

