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 と評価された場合、関数から 2 番目の引数が返されます。最初の引数が false の場合、3 番目の引数が返されます。

于 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

1行少ない

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 に答える