【问题标题】:VB.Net module behaviorVB.Net 模块行为
【发布时间】:2016-11-14 03:14:57
【问题描述】:

我的 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() 都会显示在我尚未输入 HelperAHelperB 的推荐自动完成对话框中,我有一些带有静态类的 C#.Net 项目,我发现这种行为不适用于 C#.Net 静态类。

这对我来说很奇怪和不便,因为我现在在一个命名空间下有 50 个函数,已经做了一些谷歌但找不到任何东西,任何人都可以提出解决方案(除了将 Module 更改为 Class)或任何要搜索的关键字?

任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    Module 在技术上并不意味着静态类。 VB.net 中的静态(关于函数)是Shared,没有Shared Class。我认为您想要的是具有静态/共享函数的密封/抽象/不可继承类(您将能够在没有父类实例的情况下调用这些函数,但您仍然必须引用父类调用函数)。如果是这种情况,请执行类似于以下的操作:

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

    话虽如此,我发现共享函数和模块函数之间的唯一区别——至少在实际目的上——是可以在不引用模块的情况下调用模块函数。

    【讨论】:

    • 感谢不平衡!很高兴你为我节省了很多时间!
    • Module 中的 Methods 出现在 Module 的父命名空间以及模块本身内部。这是为了与 VB6 的语法兼容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2010-10-27
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多