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

VB.Net的Shared方法中是否存在指代当前类的This等价关键字

结论

在VB.NET的共享(Shared)方法中,不存在直接等效于JavaScript静态方法中this的内置关键字,无法通过单个内置关键字直接指代当前类本身来访问共享成员。需要注意的是,VB.NET中常用的Me关键字仅指代类的实例对象,只能在实例方法中使用,在共享方法中使用Me会直接触发编译错误。

常用替代方案

以下是几种可以避免反复书写长类名的实现方式:

  • 无命名冲突时直接访问共享成员

    若共享方法内没有和共享成员重名的局部变量/参数,可直接写共享成员名访问,无需加类名前缀:

    Public Shared Function GetName() As String
        ' 无局部Name变量,直接访问共享成员
        Return Name ' 等效于MyLongClassName.Name
    End Function
    

    你示例中因为局部定义了同名的Name变量产生命名冲突,才必须加类名前缀,这种场景可以用下面两种方案处理。

  • 定义类别名简化引用

    在代码文件顶部通过Imports语句给长类名定义短别名,整个文件内都可以用别名指代该类,完全实现你想要的This.Name写法效果:

    ' 代码文件最顶部定义别名
    Imports This = MyLongClassName
    
    Public Class MyLongClassName
        Public Shared Name As String = "Ana"
    
        Public Shared Function GetName() As String
            Dim Name As String = "Beta"
            Return This.Name ' 等效于书写完整类名MyLongClassName.Name
        End Function
    End Class
    
  • 提取共享成员到模块(可选)

    如果该类的共享成员使用频率极高,可以把相关共享成员提取到Module中,Module内的成员默认全局可访问,无需加任何前缀即可直接调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:04