You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET结构体中如何为无参New()构造函数添加XML摘要标签

问题分析与解决方案

首先要明确VB.NET中结构体的构造函数规则,你遇到的问题核心是混淆了静态构造函数(Shared Sub New())和实例构造函数,以及结构体无参实例构造的特殊性:

1. 结构体无参实例构造的限制

VB.NET的结构体(Structure)不允许手动定义无参的实例构造函数(Public Sub New())——编译器会自动生成一个默认的无参实例构造,将所有值类型字段初始化为默认值(比如Integer为0)。因此你无法直接给这个自动生成的构造函数添加XML注释。

如果尝试手动定义无参实例构造,编译器会直接报错。

2. 你写的Shared Sub New()是静态构造函数

你当前定义的Shared Sub New()是静态构造函数,它的作用是初始化结构体的静态成员,只会在第一次访问该结构体的静态成员时执行一次,和实例化操作无关。因此它的XML注释只会在以下场景显示:

  • 查看结构体的静态成员时
  • 查看结构体类型本身的静态构造信息时

而你在实例化Dim a As New Area()时,调用的是编译器自动生成的无参实例构造,不会显示静态构造的注释。

正确的处理方式

方式一:说明默认实例的行为(针对无参实例构造)

由于无法直接给自动生成的无参实例构造加注释,你可以在结构体的<summary>或<remarks>标签中补充说明默认实例的行为:

''' <summary>
''' 表示一个包含宽度和高度的区域结构体
''' </summary>
''' <remarks>默认实例的宽度和高度将自动初始化为0</remarks>
Public Structure Area
    Public Width As Integer
    Public Height As Integer

    ''' <summary>
    ''' 使用指定的宽度和高度初始化Area结构体的新实例
    ''' </summary>
    ''' <param name="width">区域的宽度</param>
    ''' <param name="height">区域的高度</param>
    Public Sub New(width As Integer, height As Integer)
        Me.Width = width
        Me.Height = height
    End Sub

    ' 静态构造(若有静态成员需要初始化)
    ''' <summary>
    ''' 初始化Area结构体的静态成员,仅在首次访问静态成员时执行一次
    ''' </summary>
    Shared Sub New()
        ' 静态成员初始化逻辑
    End Sub
End Structure

方式二:确保静态构造的注释正常显示

如果你的目标是让静态构造函数的注释在Intellisense中显示,需要满足两个条件:

  1. 注释必须直接放在Shared Sub New()的上方,不能有换行或其他代码隔开;
  2. 启用项目的XML文档生成:
    • 右键项目 → 属性 → 编译 → 勾选「生成XML文档文件」,Intellisense依赖该文件读取注释信息。

内容的提问来源于stack exchange,提问作者spinjector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:41:03