在VB6中,声明的字段是否有默认值?

10

我正在查看一些旧的VB6代码,在许多窗体中,我遇到了诸如以下声明语句:

 PEC_NUM_ENT(1) As Byte
 EC_MORE_RW_EXIST(0) As Byte
 EC_CODE_IND(0) As Byte
 EC_DATA(7) As PRXDetail 

我的问题是,这些字段是否有默认值?如果有,那么它们的值是什么?谢谢。


相关问题请参考 http://stackoverflow.com/questions/4284216 (非重复问题) - MarkJ
在VB中将变量称为“字段”的想法有点奇怪。 - Bob77
@BobRiemersma 字段是否只指属于类的那些“变量”? - CodeBlue
@BobRiemersma 变量不被称为字段; 这里的“字段”是用户定义类型的组件,就像C语言结构体中的字段一样。 - mdoyle
好的,但在UDT中,这些被称为“元素”。请参阅手册。然而,至少在这种情况下,“字段”一词更有意义。不,类的属性是属性,而不是字段。 - Bob77
2个回答

19
是的。 数字和日期类型默认为0,字符串为空字符串(即“”),布尔值为False,变体为EMPTY。

谢谢您的回答。EMPTY在Java中是否像“null”一样。在这种情况下,EC_DATA最初会是EMPTY吗? - CodeBlue
2
空值和null并不相同。据我回忆,变体基本上是一个未经过类型定义的类型,直到它被使用——所以如果首先用作字符串,那么Empty就是""等等。我有点错过了EC_DATA,这是一个PRXDetail数组——显然是用户定义的类型。我不确定,但怀疑UDT中的每个字段都会具有默认值。我不确定VB6如何在幕后处理UDT,但我认为数组的每个元素都是一个内存位置。这些值可以通过EC_DATA(0).FieldName等方式获取。 - mdoyle
+1 是的,如果在表达式中使用了空 Variant,则会根据表达式将其计算为值0或空字符串。 - MarkJ

8
根据VB6文档,变量初始化时,数值型变量被初始化为0,可变长度字符串被初始化为空字符串(""),固定长度字符串填充为零。变体变量被初始化为空。用户定义类型变量的每个元素都被初始化为单独的变量。PRXDETAIL看起来可能是一个用户定义类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接