VB6强制转换表达式
在VisualBasic6中,与VB.NET的CType等价的强制转换表达式是什么?CType()。C*(CDate()、CStr()等)在很大程度上是遗留问题 根据您要强制转换的类型,它们有很多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前面提到的强制
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&))