如何检查List对象是否为Null以避免触发空异常?
VB.NET 空值判断解决方案
核心语法
VB中判断引用类型是否为空统一使用Is Nothing,判断非空则用IsNot Nothing,不能直接将对象变量放在If条件后当做布尔值判断,会直接抛出运行时异常。
现有代码问题说明
你现有代码第一行
Dim list As New List(Of ContactU)完全冗余,下一行立刻对list重新赋值,之前New生成的空列表会被直接丢弃,没有任何意义。此外你直接调用list.Count的逻辑存在空引用风险:如果list本身是Nothing,调用Count属性会直接抛出空异常。
修正后的完整代码
' 先判断上层数据源不为空,避免调用ToList方法时抛出空异常 If resource.ContactUs IsNot Nothing Then Dim list = resource.ContactUs.ToList() ' 同时判断列表本身不为空、且存在元素 If list IsNot Nothing AndAlso list.Count > 0 Then For Each item In list ' 单个元素非空判断 If item IsNot Nothing Then ' 此处写你的业务逻辑 End If Next End If End If
补充说明
- 如果你使用的是 Visual Basic 14 及更高版本,可以用空条件运算符简化判断:
If list?.Count > 0 Then,list为Nothing时list?.Count会返回Nothing,和数值比较的结果为False,无需单独判断list是否为Nothing。 - 不要混淆
Nothing和DBNull.Value,后者仅用于处理数据库返回的空值场景,不适用普通业务对象的空值判断。
内容的提问来源于stack exchange,提问作者user12280303
相关产品推荐
相关产品推荐

