VB6强制转换表达式

VB6强制转换表达式,vb6,casting,Vb6,Casting,在VisualBasic6中,与VB.NET的CType等价的强制转换表达式是什么?CType()。C*(CDate()、CStr()等)在很大程度上是遗留问题 根据您要强制转换的类型,它们有很多 cint() Cast to integer cstr() cast to string clng() cast to long cdbl() cast to double cdate() cast to date 它还具有隐式强制转换,因此您可以执行此操作myString=myInt前面提到的强制

在VisualBasic6中,与VB.NET的CType等价的强制转换表达式是什么?

CType()。C*(CDate()、CStr()等)在很大程度上是遗留问题

根据您要强制转换的类型,它们有很多

cint() Cast to integer
cstr() cast to string
clng() cast to long
cdbl() cast to double
cdate() cast to date

它还具有隐式强制转换,因此您可以执行此操作myString=myInt

前面提到的强制转换是正确的,但是如果类型是对象,则必须在VB6中使用“Set”,例如:

If IsObject(Value) Then
    Set myObject = Value ' VB6 does not have CType(Value, MyObjectType)
Else
    myObject = Value     ' VB6 does not have CType(Value, MyObjectType)
End If

当然,这取决于您要转换的类型。几乎所有用户类都是对象以及集合、字典和许多其他类。内置类型(如long、integer、boolean等)显然不是对象。

假设您有一个ChildClass(child)对象,您希望将其强制转换为基类。您可以这样做:

Dim base As BaseClass
Set base = child
由于VB6处理编译时类型安全性的方式,您可以不用任何额外的语法就可以做到这一点


注意:鉴于其他人似乎都提到了
CType
,我可能完全误解了这个问题,如果是这样的话,我道歉

很多海报似乎误读了这个问题,因此我将尝试通过重新表述这个问题并总结到目前为止给出的正确答案来澄清问题

问题 我想将一种类型的数据转换为另一种类型。在我的VB.NET代码中,我将使用
CType
来实现这一点。但是,当我尝试在VB6中使用
CType
时,会出现“子函数或函数未定义”错误。那么,如果
CType
不起作用,如何在VB6中执行强制转换呢

解决方案 正如您可能已经发现的,VB6不像VB.NET那样具有
CType
函数。但是,在VB.NET代码中可能遇到的其他转换函数(名称以
C
开头的函数),如CInt和CStr,确实存在于VB6中,您可以使用它们在非对象类型之间进行转换。没有用于将一个类的对象转换为另一个类的对象的内置函数。请记住,与VB.NET不同,VB6不支持继承。VB6中的类可以实现一个或多个接口,但不能从另一个类继承。但是,如果对象的类实现了多个接口,则可以使用
Set
语句将对象强制转换为它支持的接口之一(如Ant所建议的)。下面提供了Ant代码示例的扩展版本:

示例:将类强制转换为其支持的接口之一


VB6中的内置类型转换函数 下面是VB6中可用的内置转换函数的完整列表,直接取自VB6帮助文件


CBool 返回

Boolean

说明

将表达式转换为布尔值

表达式参数的范围:

任何有效的字符串或数值表达式。

CByte 返回

字节

说明

将表达式转换为字节

表达式参数的范围:

0到255。

中央控制室 返回

货币

说明

将表达式转换为货币

表达式参数的范围:

-922337203685477.5808至922337203685477.5807。

CDate 返回

日期

说明

将表达式转换为日期

表达式参数的范围:

任何有效的日期表达式。

CDbl 返回

Double

说明

将表达式转换为双精度

表达式参数的范围:

-1.79769313486232E308至 -4.94065645841247E-324为负值;正值为4.94065645841247E-324至1.79769313486232E308。

CDec 返回

Decimal

说明

将表达式转换为十进制

表达式参数的范围:

+/-79228162514264337593543950335表示零刻度数字,即无小数位数的数字。对于小数点后28位的数字,范围为 +/-7.9228162514264337593543950335. 最小可能的非零数字为0.0000000000000000000001。

辛特 返回

Integer

说明

将表达式转换为Long

表达式参数的范围:

-32768至32767;分数是四舍五入的。

CLng 返回

Long

说明

将表达式转换为Long

表达式参数的范围:

-2147483648至2147483647;分数是四舍五入的。

CSng 返回

Single

说明

将表达式转换为单个表达式

表达式参数的范围:

-负值为3.402823E38至-1.401298E-45;正值为1.401298E-45至3.402823E38


CStr 返回

String

说明

将表达式转换为字符串

表达式参数的范围:

CStr的返回取决于表达式参数


CVar 返回<
Dim base As BaseClass
Dim child As ChildClass     'implements BaseClass'

Set child = New ChildClass 
Set base = child            '"Cast" child to BaseClass'
MsgBox CLng(CBool(3&))