用户定义的数据类型

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

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

注解

当需要将各种数据类型组合成单个单元时,或在没有任何基本数据类型满足需求时,可定义和使用结构数据类型。

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

声明格式

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

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

成员访问级别

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

编程提示

  • 内存消耗。 与所有复合数据类型一样,不能通过将其成员的标称存储分配相加来安全地计算结构的总内存消耗量。 而且,不能安全地假设内存中的存储顺序与声明顺序相同。 如果需要控制结构的存储布局,则可以将 StructLayoutAttribute 属性应用于 Structure 语句。

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

  • Widening。 不会与任何结构数据类型自动转换。 可以使用 Operator 语句在结构上定义转换运算符,并且可以将每个转换运算符声明为 WideningNarrowing

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

  • Framework 类型。 .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

另请参阅