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

如何在VB.NET类中将多函数分组到独立对象且无需初始化?

解决方案

根据你的需求——将相关函数分组且无需实例化分组容器,以下是VB.NET中的几种可行方案:

1. 嵌套模块(推荐纯方法分组场景)

模块的成员默认是共享的,无需实例化即可调用,最适合纯功能分组的需求:

Public Class TopLevelClass
    ' 分组Object1相关方法的嵌套模块
    Public Module Object1
        Public Function FunctionOfObject1ThatIveCreated() As [你的返回类型]
            ' 这里实现方法逻辑
        End Function
    End Module

    ' 分组Object2相关方法的嵌套模块
    Public Module Object2
        Public Function FunctionOfObject2ThatIveCreated() As [你的返回类型]
            ' 这里实现方法逻辑
        End Function
    End Module
End Class

调用方式:

' 无需创建TopLevelClass实例,直接通过类名+模块名调用
Dim result1 = TopLevelClass.Object1.FunctionOfObject1ThatIveCreated()
Dim result2 = TopLevelClass.Object2.FunctionOfObject2ThatIveCreated()

如果需要访问TopLevelClass的实例成员,可在模块方法中接收顶层类实例作为参数:

Public Class TopLevelClass
    Private _instanceData As String = "测试数据"

    Public Module Object1
        Public Function FunctionOfObject1ThatIveCreated(topInstance As TopLevelClass) As String
            ' 访问顶层实例的私有成员
            Return topInstance._instanceData.ToUpper()
        End Function
    End Module
End Class

调用时传入实例:

Dim topObj As New TopLevelClass()
Dim result = TopLevelClass.Object1.FunctionOfObject1ThatIveCreated(topObj)

2. 嵌套结构(适合可能需添加状态的场景)

结构允许包含实例成员,若之后需要给分组添加相关数据状态,可使用带共享方法的嵌套结构:

Public Class TopLevelClass
    Public Structure Object1
        ' 共享方法无需实例化结构即可调用
        Public Shared Function FunctionOfObject1ThatIveCreated() As [你的返回类型]
            ' 方法实现
        End Function

        ' 可选:若需要状态,可添加实例成员
        Public Property SomeData As String
    End Structure

    Public Structure Object2
        Public Shared Function FunctionOfObject2ThatIveCreated() As [你的返回类型]
            ' 方法实现
        End Function
    End Structure
End Class

调用方式与模块一致,若要使用实例成员则需创建结构实例。

3. 静态类模拟(替代模块的另一种写法)

通过NotInheritable Class+私有构造函数实现静态类效果,语义上更明确是“不可实例化的功能容器”:

Public Class TopLevelClass
    Public NotInheritable Class Object1
        ' 私有构造函数防止外部实例化
        Private Sub New()
        End Sub

        Public Shared Function FunctionOfObject1ThatIveCreated() As [你的返回类型]
            ' 方法实现
        End Function
    End Class

    Public NotInheritable Class Object2
        Private Sub New()
        End Sub

        Public Shared Function FunctionOfObject2ThatIveCreated() As [你的返回类型]
            ' 方法实现
        End Function
    End Class
End Class

调用方式与前两种方案相同。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:05:27