0

我是一名 C# 程序员,但涉足 VB.Net,因为我团队中的其他人都在使用它。为了专业发展,我想缩小以下 If... Else... 声明。

If cmd.Parameters("@whenUpdated").Equals(DBNull.Value) Then
    item.WhenUpdated = Nothing
Else
    item.WhenUpdated = cmd.Parameters("@whenUpdated").Value
End If

我很欣赏已经有示例可用,但是我无法让它适用于这种特定情况。

干杯,伊恩。

4

5 回答 5

6

使用 If 作为函数而不是语句:

item.WhenUpdated = If(cmd.Parameters("@whenUpdated").Equals(DBNull.Value), cmd.Parameters("@whenUpdated").Value, Nothing)
于 2010-04-02T22:40:32.687 回答
3

与 C# 中的三元运算符类似,VB 具有IIF 函数

item.WhenUpdated = IIF(cmd.Parameters("@whenUpdated").Equals(DBNull.Value),
                            cmd.Parameters("@whenUpdated").Value, 
                            Nothing)

如果第一个参数(布尔表达式)的计算结果为 true,则从函数返回第二个参数。如果第一个参数为假,则返回第三个参数。

于 2010-04-02T22:40:32.233 回答
2
item.WhenUpdated = Nothing
If cmd.Parameters("@whenUpdated").Equals(DBNull.Value) Then
    item.WhenUpdated = cmd.Parameters("@whenUpdated").Value
End If

只有 1 行,但仍然更短。

IF函数绝对是最短的,但不是最易读的。

于 2010-04-02T22:40:24.890 回答
0

少一行

item.WhenUpdated = Nothing
If cmd.Parameters("@whenUpdated").Equals(DBNull.Value) Then
    item.WhenUpdated = cmd.Parameters("@whenUpdated").Value
End If
于 2010-04-02T22:41:27.410 回答
0

如果您想要短路行为,请使用运算符 If(...)。

如果您不想要短路行为,请使用函数 IIf(...)。

于 2010-04-02T22:44:15.647 回答