VB.net奇怪的条件声明(IF)

时间:2013-04-11 10:13:50

标签: vb.net if-statement

想知道是否有人可以借给我他们的专业知识。对于Vb.net来说很新,并且在我们的一个产品中遇到了这个条件声明。有人可以确认声明的有效性并解释这里发生了什么吗?我尝试了很多次搜索,但找不到任何相关内容。

If (IsDBNull(dr("someID")), "0", dr("someID")) = someID.ToString() Then

我已将“id”值名称更改为商业产品中的代码,但使用的ID都是相同的变量(整数)。

感谢您提供的任何输入!

PS:我无法在运行时检查此问题的原因是产品的运行方式。

3 个答案:

答案 0 :(得分:2)

这是一个内联的If语句 如果If(condition,iftrue,iffalse)为真,则condition评估并返回iftrue其他iffalse

答案 1 :(得分:1)

VB.NET 2008中的If operator充当ternary operator。[ REFERENCE ]

示例:

Dim foo as String = If(bar = buz, cat, dog) 'Condition satisfied then it'll return cat else dog.

答案 2 :(得分:1)

该语句正在检查dr("SomeID")是否等于值someID.ToString。需要If的原因是您需要检查dr("someID")是否Null。如果使用的是0,则可能不应该等于someID

与执行以下操作相同:

If Not IsDBNull(dr("someID")) Then
    If dr("someID").ToString = someID.ToString Then

    End If
End If

我建议像这样的东西更合适(检查整数值而不是比较字符串)

If(IsDBNull(dr("someID")), 0, CInt(dr("someID"))) = someID Then

我还建议转动Option Strict On,因为您发布的代码不应该编译!