2010-02-09 44 views
4

我是C#程序員,但將一些代碼從C#轉換爲VB.NET。在C#中,我可以簡單地使用(int)blah.getValue(),其中getValue()返回Integer?如何轉換整數?在VB.NET中的整數?

做在VB.NET一個DirectCast()雖然不工作,說Integer?不能轉換爲Integer

想法?

+1

你爲什麼需要施放它?如果'getValue()'返回'Integer?',那麼'。Value屬性的類型是Integer。只需使用'blah.getValue()。Value'。或者也可以使用'blah.getValue()。GetValueOrDefault(<默認值here>)' –

回答

6

整數?是可以爲空的類型,所以你可能不得不將它轉換爲可空的Integer。

你想使用CType函數,如'Integer'或'Integer?'根據您的情況而定

Val = CType(Source,Integer?) 
+0

CType用整數對它進行排序。謝謝! – NibblyPig

+4

-1這個答案不完全正確。 null有一個不同的行爲。 '(int)blah.getValue()在'blah.getValue()'爲null時拋出一個異常。如果'blah.getValue()'爲null,'CType(blah.getValue(),Integer)'返回零。 – MarkJ

0

您應該使用CType功能如下:

CType(blah.getValue(), Integer) 
7

使用value屬性獲取實際的整數值。

Dim intNullable As Integer? 

If intNullable.HasValue Then 
Return intNullable.Value 
End If 
+0

+1。對於獎勵標記,添加一個拋出「InvalidOperationException」的Else子句,Nullable對象必須有一個值。「'這是C#(int)'cast轉換遇到'null'值時發生的情況。 – MarkJ

+1

這是正確的答案。 (當您測試'.HasValue'時,一個Else子句是多餘的) – smirkingman

0
dim a as integer? = 1 
dim b as integer = a.value 

注意檢查a.hasvalue(返回boolean值,如果真有一個值)。

0
myNonNullableVar = if(myNullableVar, 0) 

將設置0如果整數?爲空或返回實際值。

C#,這將是:

myNonNullableVar = myNullableVar ?? 0; 
1

CINT(ValueToBeInteger)

0

如果使用CTYPE或CINT或其他轉換功能可空整數轉換爲常規整數,一個空值都將被轉換爲零。

檢查可空類型是否具有@Rhapsody答案中的值。

您還可以使用可空類型方法.GetValueOrDefault().GetValueOrDefault(x)。如果值爲null,則不帶任何參數的重載將返回數據類型的默認值。例如。整數默認值爲零;布爾默認值是False。帶參數的重載允許您指定一個默認值,如果該值爲null,則使用該值。

Nullable.GetValueOrDefault Method

-1

@SLC:這是非常簡單的獲得空Int32的值?的C#轉換爲Integer。

例子:

ID(Nullable<Int32?>) 

你要做的: ID.value

其中ID是NullableObject。

它會在VB.NET中返回一個整數。

+0

提供的語言樣本看起來像是在C#中,並且OP特別要求VB.NET。我不確定此答案是否提供了有關此問題已有的豐富答案的任何其他信息。 – KyleMit

+0

'Nullable '沒有任何意義。也許你打算輸入'可空的'(不帶問號)? –