如何转换整数?在VB.NET中转换为整数?

如何转换整数?在VB.NET中转换为整数?,vb.net,Vb.net,我是一名C#程序员,但正在将一些代码从C#转换为VB.NET。在c中,我可以简单地使用(int)blah.getValue()其中getValue()返回一个整数? 但是,在VB.NET中执行DirectCast()不起作用,说Integer?不能转换为Integer 想法?您应该使用如下函数: CType(blah.getValue(), Integer) 整数?是可为空的类型,因此您可能必须将其转换为可为空的整数 您想使用CType函数,如“Integer”或“Integer”,具体取决于

我是一名C#程序员,但正在将一些代码从C#转换为VB.NET。在c中,我可以简单地使用
(int)blah.getValue()
其中
getValue()
返回一个
整数?

但是,在VB.NET中执行
DirectCast()
不起作用,说
Integer?
不能转换为
Integer

想法?

您应该使用如下函数:

CType(blah.getValue(), Integer)

整数?是可为空的类型,因此您可能必须将其转换为可为空的整数

您想使用CType函数,如“Integer”或“Integer”,具体取决于您的情况

Val = CType(Source,Integer?)

使用value属性获取实际整数值

Dim intNullable As Integer?

If intNullable.HasValue Then
 Return intNullable.Value
End If
请记住检查a.hasvalue是否为布尔值(如果a有值,则返回true)

如果是整数,是否将设置为0?为null或返回实际值

在这方面,它将是:

 myNonNullableVar = myNullableVar ?? 0;

CInt(ValueToBeInteger)

如果使用CType或CInt或其他转换函数将可为空的整数转换为常规整数,则空值将转换为零

检查可空类型是否有@Rhapsody的答案中的值

您还可以使用可为空的类型方法
.GetValueOrDefault()
.GetValueOrDefault(x)
。如果值为null,则不带任何参数的重载将返回数据类型的默认值。例如:整数默认值为零;布尔默认值为False。带有参数的重载允许您指定一个默认值,以便在该值为null时使用


@SLC:获取可为null的Int32的值非常简单?将C#的值转换为整数

例如:

    ID(Nullable<Int32?>)
ID(可为空)
你必须做到: ID.value

其中ID是一个NullableObject


它将在VB.NET中返回一个整数。

CType将其排序为整数。谢谢-这个答案并不完全正确。null有不同的行为<如果
blah.getValue()
为null,则code>(int)blah.getValue()抛出异常
CType(blah.getValue(),Integer)
如果
blah.getValue()
为空,则返回零。+1。要获得额外分数,请添加一个Else子句,该子句抛出InvalidOperationException“可为null的对象必须有一个值。”这就是当C#
(int)
强制转换遇到
null
值时发生的情况。这是正确答案。(当您测试“.HasValue”时,Else子句是多余的。)提供的语言示例看起来像是用C#编写的,OP特别要求使用VB.NET。我不确定这个答案是否提供了更多关于这个问题的答案。
Nullable
毫无意义。也许您想键入
Nullable
(不带问号)?为什么需要强制转换它?如果
getValue()
返回
Integer?
,则
.Value
属性的类型为Integer。只需使用
blah.getValue().Value
。或者也可以使用
blah.getValue().getValuerDefault()
 myNonNullableVar = myNullableVar ?? 0;
    ID(Nullable<Int32?>)