2010-02-09 20 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 '没有任何意义。也许你打算输入'可空的'(不带问号)? –