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
相关产品推荐
相关产品推荐

