【发布时间】:2013-11-24 17:58:40
【问题描述】:
让我们定义这个函数:
Public Function Test(ByVal value As Boolean)
Return "blabla" + If(value = Nothing, "", If(value, "1", "0"))
End Function
我希望它执行以下操作:
Test(True) -> "blabla1", Test(False) -> "blabla0", Test(Nothing) -> "blabla".
问题是Test(Nothing) 返回“blabla0”。
【问题讨论】:
-
对 3 个值使用布尔值是个坏主意。考虑改变方法
-
我不是说要把它用于 3 个值,我只是从数据库中获取布尔值,我只是在处理拉取失败的情况
-
@Arty:要检查数据库结果中的空值,请检查值(类型为
Object,而不是Boolean)是否为DBNull,或使用DataReader.IsDBNull方法。 -
您正在考虑 C# 或 Java 的空术语。在这种情况下,存在三个值 - True、False 或 Null(如三态复选框)。然而这不是在 Visual Basic 中 Nothing 工作的方式。在 VB 中,False 在布尔值的上下文中是 Nothing。类似地,String.Empty 在字符串的上下文中是 Nothing。这很令人困惑,但它不等同于 C# 或 Java 中的 null。
标签: .net vb.net boolean nothing