【问题标题】:In VB6, do declared fields have default values?在 VB6 中,声明的字段是否具有默认值?
【发布时间】:2012-04-06 14:51:36
【问题描述】:

我正在浏览一些旧的 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 

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

【问题讨论】:

  • 相关问题stackoverflow.com/questions/4284216(不重复)
  • 在 VB 中调用变量“字段”的想法有点……奇怪。
  • @BobRiemersma 字段是否只指那些属于类的“变量”?
  • @BobRiemersma 变量不称为字段;这里的“字段”是用户定义类型的组件——就像 C 中结构的字段一样。
  • 好的,但是在 UDT 中,这些被称为“元素”。请参阅手册。然而,至少在这种情况下,术语“领域”更有意义。不,类的属性是属性而不是字段。

标签: vb6


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。在 Java 中像“null”一样是 EMPTY。在这种情况下,EC_DATA 最初会为 EMPTY 吗?
  • 空不等于空。我记得,一个变体基本上是一个无类型的类型,直到它被使用——所以如果它首先用作字符串,那么 Empty 是“”,等等。我有点错过 EC_DATA,它是一个 PRXDetail 数组——显然是一个用户定义的类型。我不确定,但怀疑 UDT 中的每个字段都有默认值。我不确定 VB6 如何在后台处理 UDT,但我怀疑数组的每个元素都是一个内存位置。这些值将通过 EC_DATA(0).FieldName 等获得。
  • +1 是的,如果在表达式中使用空 Variant,它将根据表达式计算为值 0 或空字符串。
【解决方案2】:

来自VB6 documentation

当变量被初始化时,一个 数值变量初始化为 0, 可变长度字符串是 初始化为长度为零的字符串 (""),一个固定长度的字符串是 用零填充。变体变量 被初始化为空。每个元素 一个用户定义的类型变量是 初始化就好像它是一个单独的 变量。

PRXDETAIL 看起来可能是用户定义的类型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2019-05-04
    • 2015-07-21
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多