User-Defined 数据类型

以定义的格式保存数据。 该 Structure 语句定义格式。

早期版本的 Visual Basic 支持用户定义的类型(UDT)。 当前版本将 UDT 扩展到 结构。 结构是各种数据类型的一个或多个 成员 的串联。 Visual Basic 将结构视为单个单元,但你也可以单独访问其成员。

注解

当需要将各种数据类型合并为单个单元时,或者当任何基本数据类型都不符合需求时,请定义和使用结构数据类型。

结构数据类型的默认值由其每个成员的默认值的组合组成。

声明格式

结构声明以 结构语句 开头,以语句结尾 End Structure 。 该 Structure 语句提供结构的名称,该结构也是结构所定义的数据类型的标识符。 代码的其他部分可以使用此标识符声明变量、参数和函数返回值,以表示此结构的数据类型。

语句之间的StructureEnd Structure声明定义结构的成员。

成员访问级别

必须使用 Dim 语句 或指定访问级别的语句(例如 PublicFriendPrivate)声明每个成员。 如果使用 Dim 语句,则访问级别默认为公共。

编程提示

  • 内存消耗。 与所有复合数据类型一样,无法通过添加结构成员的名义存储分配来安全地计算结构的总内存消耗量。 此外,无法安全地假定内存中的存储顺序与声明顺序相同。 如果需要控制结构的存储布局,可以将属性应用于StructLayoutAttributeStructure语句。

  • 互作注意事项。 如果要与未为 .NET Framework(例如自动化或 COM 对象)编写的组件相交,请记住,其他环境中的用户定义的类型与 Visual Basic 结构类型不兼容。

  • 扩大。 没有自动转换到任何结构数据类型或从任何结构数据类型转换。 可以使用 Operator 语句在结构上定义转换运算符,并且可以声明每个转换运算符为 WideningNarrowing

  • 键入字符。 结构数据类型没有文本类型字符或标识符类型字符。

  • 框架类型。 .NET Framework 中没有相应的类型。 所有结构都继承自 .NET Framework 类 System.ValueType,但没有任何单个结构对应 System.ValueType

示例:

以下范例显示了结构声明的大纲。

[Public | Protected | Friend | Protected Friend | Private] Structure structname
    {Dim | Public | Friend | Private} member1 As datatype1
    ' ...
    {Dim | Public | Friend | Private} memberN As datatypeN
End Structure

另请参阅