我的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}})或要搜索的任何关键字?
任何帮助都将不胜感激!
答案 0 :(得分:2)
Module
在技术上并不代表静态类。 VB.net中的静态(关于函数)是Shared
,没有Shared Class
。我认为你想要的是一个带有静态/共享函数的密封/抽象/不可继承的类(你可以在没有父类实例的情况下调用函数,但是你仍然需要引用调用函数时的父类)。如果是这种情况,那么执行类似以下的操作:
Public NotInheritable Class HelperA
Public Shared Function FunctionA() as Boolean
Return True
End Function
End Class
话虽如此,我在共享函数和模块函数之间找到的唯一区别 - 至少在实际应用中 - 可以在不引用模块的情况下调用模块函数。