2010-08-27 71 views
2

我有:VB.NET - 想添加兩個可爲空的類型 - 如何? (即VAR1 + VAR2其中兩個是可空的和vari1 =無,VAR2 = 5個結果中的任何內容)

Dim nVar1 As Long? 

Dim nVar2 As Long? 

Dim nVarSum As Long? 

nVar1 = Nothing 

nVar2 = 5 

nVarSum = nVar1 + nVar2 

我寧願結果結束與nVarSum爲5,而不是沒有。

我明白如果你添加一些東西到一個未知的值,你會以「somthing + unknown」結尾或者 x + 5總是等於「x + 5」而不是「5」,因爲你仍然帶着未知的值「X」。

但是,在這種情況下,如何有效地將未知或無作爲零作爲加法的目的呢?

謝謝! (基本上發生的是,最終用戶向我們發送一個數據文件,這個代碼解析該文件,然後將15個字段合併在一起,如果用戶將這些字段留空而不是給它們分配一個零,我需要把它看作是這個加法操作的零,但是所有剩下的代碼需要繼續把它看作一個Nothing值,因爲用戶沒有實際提交零...他們提交空白或沒有任何內容)

+0

另一個原因使用C#'nVarSum =(nVar1ϵ 0)+ nVar2' – 2010-08-27 16:05:28

+1

@Binary,VB的語法正如這裏簡潔。 'nVarSum = If(nVar1,0)+ nVar2' – JaredPar 2010-08-27 16:09:53

+0

++的確如此! (項目維護,否則我會在c#中完成它) – Maxer 2010-08-27 16:11:57

回答

3

我認爲最簡單的方法是使用If運算符將Nothing值強制爲默認值。

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

If操作者在2參數形式時施加到空類型基本上執行以下步驟。如果可空值有一個值,則返回值是該值,否則它是第二個參數。

+0

我討厭語言添加不明確的運算符。 – ChaosPandion 2010-08-27 16:08:02

+0

@Chaos,這是怎麼模糊的?這是C#的空煤炭運營商的VB等價物。 – JaredPar 2010-08-27 16:08:55

+0

@JaredPar - 'If(Boolean,TrueValue,FalseValue)'? – ChaosPandion 2010-08-27 16:09:43

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

或者在C#:

(nVar1??0)+(nVar2??0) 
0

或者明確地測試並沒有設置默認值。與其他發佈的答案相同。

If nVar1 is nothing then 
    nVar1 = 0 
end if 

nVarSum = nVar1 + nVar2 
+0

我想我將不得不使用If運算符,因爲我無法更改nVar1的實​​際值(我在事實解釋上下文後添加了一個編輯)。沒有什麼價值需要保留以後在代碼中使用,等等...... 否則,我完全同意將它設置爲零並且完成它。 – Maxer 2010-08-27 16:10:50

相關問題