【发布时间】:2012-11-04 16:35:26
【问题描述】:
我正在研究 VB 中的类型,尤其是 VBA 中的类型。一般来说,给定一个实体有两种类型:我猜Effective value type在this part of the specification中定义为value types; Declared Type 在 this part of the specification 中定义。
要进行测试,我需要使用一些函数来检查类型。有TypeName 和VarType。我认为它们用于检查实体的effective value type,因为TypeName可以返回DBNull、Decimal和Nothing; VarType 可以返回 vbNull、vbEmpty、vbError 和 vbDecimal。这些类型存在于effective value types的表中,但不存在于declared type的表中。
所以现在,我的问题是,有谁知道如何检查/显示实体(变量、表达式...)的 declared type?
编辑1:可能对于一个变量来说,它的declared type就是变量声明所指定的类型。我想坚持认为,VBA 似乎有 declared type 用于表达式。例如,Operator Declared Type 在此 link 中被提及。我认为是指操作结果的declared type。这意味着-i、i+5、i>6...等实体可以有declared type。我想知道如何显示他们声明的类型。
【问题讨论】:
-
TypeName和VarType是具有单个Variant参数的常规函数,因此无论“声明的类型”如何,每个变量在传递给它们之前都会转换为Variant。在这个VarType(1)中,1 的“声明类型”是什么?它不是一个变量,所以它根本没有被声明/标注。实现这样的东西的唯一方法是通过一种特殊的语言结构,而不是一个函数,我不知道有什么,最接近的是TypeOf ... Is -
看来
TypeOf在VBA中只能检查Object,我们不能用它来检查Interger,String... -
VBA 和 VBScript 中的 VarType 与您链接的参考不同,它是 msdn.microsoft.com/en-us/library/3kfz157h(v=vs.84).aspx,我认为它可以满足您的需求。
-
这是 VBA 中
TypeName的正确参考 - msdn.microsoft.com/en-us/library/gg278698.aspx 问题中的链接适用于 VB -
i是一个整数,因为它被声明为一个整数,在该声明的范围内i永远是一个整数。短语“有效值类型”有意义的唯一上下文是当一个变体持有一个值时,您是在问如何确定变体中值的相应数据类型?