VB.Net模块行为

时间:2016-11-14 03:14:58

标签: asp.net .net vb.net visual-studio

我的VB.Net模块有一个“奇怪”的情况,根据我的理解,VB.Net中的Module表示静态类,所以我实现了几个辅助模块,每个模块都有几个函数,让我们举一些例子来更好地解释(免费手码,可能包含语法问题):

Namespace Helpers
    Module HelperA
        Public Function FunctionA() As Boolean
            Return True
        End Function
    End Module
End Namespace

Namespace Helpers
    Module HelperB
        Public Function FunctionB() As Integer
            Return 1
        End Function
    End Module
End Namespace

当我在Visual Studio中开始编码并输入Helpers.时,FunctionA()FunctionB()都显示在推荐的自动完成对话框中,我没有输入HelperA或者HelperB,我有一些带有静态类的C#.Net项目,我发现这种行为不适用于C#.Net静态类。

这对我来说很奇怪,因为我现在在一个命名空间下有50个功能,做了一些谷歌,但没有找到任何东西,任何人都可以建议一个解决方案(除了改变Module到{{ 1}})或要搜索的任何关键字?

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:2)

Module在技术上并不代表静态类。 VB.net中的静态(关于函数)是Shared,没有Shared Class。我认为你想要的是一个带有静态/共享函数的密封/抽象/不可继承的类(你可以在没有父类实例的情况下调用函数,但是你仍然需要引用调用函数时的父类)。如果是这种情况,那么执行类似以下的操作:

Public NotInheritable Class HelperA
    Public Shared Function FunctionA() as Boolean
        Return True
    End Function
End Class

话虽如此,我在共享函数和模块函数之间找到的唯一区别 - 至少在实际应用中 - 可以在不引用模块的情况下调用模块函数。