2

私は持っている:

Dim nVar1 As Long?

Dim nVar2 As Long?

Dim nVarSum As Long?

nVar1 = Nothing

nVar2 = 5

nVarSum = nVar1 + nVar2

結果は、Nothing ではなく、nVarSum が 5 で終了することをお勧めします。

不明な値に何かを追加すると、「何か+不明」になるか、不明な「x」をまだ持ち歩いているため、x + 5は常に「5」ではなく「x + 5」になることを理解しています。

ただし、この場合、追加の目的で未知または何もをゼロとして効果的に扱うにはどうすればよいでしょうか?

ありがとう!

(基本的には、エンド ユーザーがデータ ファイルを送信しているということです。このコードはそのファイルを解析し、約 15 のフィールドを合計します。ユーザーがそれらのフィールドにゼロを割り当てる代わりに空白のままにした場合、それを処理する必要があります。この 1 つの加算操作ではゼロであるかのように見えますが、ユーザーが実際にゼロを送信しなかったため、コードの残りの部分はすべてそれを Nothing 値として認識し続ける必要があります...彼らは空白または何も送信しませんでした)

4

3 に答える 3

5
nVar1.GetValueOrDefault()+ nVar2.GetValueOrDefault()

またはC#で:

(nVar1??0)+(nVar2??0)
于 2010-08-27T16:06:07.943 に答える
3

最も簡単な方法は、演算子を使用して値をデフォルト値にIf強制変換することだと思います。Nothing

nVarSum = If(nVar1,0) + If(nVar2,0)

Ifnull許容型に適用される場合の2引数形式の演算子は、基本的に次のことを行います。nullableに値がある場合、戻り値は値です。それ以外の場合は、2番目の引数です。

于 2010-08-27T16:04:59.290 に答える
0

または明示的に何もテストせず、デフォルト値を設定します。投稿された他の回答と同じ結果。

If nVar1 is nothing then
   nVar1 = 0
end if

nVarSum = nVar1 + nVar2
于 2010-08-27T16:09:00.600 に答える