2

我有:

Dim nVar1 As Long?

Dim nVar2 As Long?

Dim nVarSum As Long?

nVar1 = Nothing

nVar2 = 5

nVarSum = nVar1 + nVar2

我希望结果以 nVarSum 为 5 结束,而不是 Nothing。

我知道如果您将某些内容添加到未知值,您最终会得到“somthing + unknown”或 x+5 将始终等于“x+5”而不是“5”,因为您仍然携带那个未知的“x”。

但是,在这种情况下,为了加法的目的,我如何有效地将未知或无视为零?

谢谢!

(基本上发生的是最终用户正在向我们发送一个数据文件,此代码解析该文件,然后将大约 15 个字段相加。如果用户将这些字段留空而不是为它们分配零,我需要处理它就好像这一次加法操作为零一样,但所有其余代码都需要继续将其视为 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)

If当应用于可空类型时,2 参数形式的运算符基本上执行以下操作。如果 nullable 有一个值,则返回是该值,否则它是第二个参数。

于 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 回答