我对VB.NET中的Static
实现感到困惑。在C#中,我们可以创建静态类和静态方法来为我们的应用程序编写实用程序方法。
现在,VB.NET允许我们创建Module
来代替静态类。如果我们在模块中创建一个方法,默认情况下它将变为静态的。但在我的申请中,我写了以下代码:
Public Class Utility
Public Shared Function GetValue() As String
// My code
End Function
End Class
通过编写代码,我能够访问实用程序方法Utility.GetValue()
。由于这不是一个静态类,我应该实例化它的一个对象。但是这个方法对Utility
的类和对象都可用
现在我的问题是:
- 我所做的实现是否可能违反模块提供的静态类的任何功能
- 这与实现模块有什么区别
- 如果我创建一个模块,它的作用域会和这个类一样吗?我想在整个项目中访问该方法,以及引用该方法的其他项目
我试着查阅了多篇文章,但没有找到确切的答案。请帮忙。
VB.NET模块是静态类。编译器为您处理此问题。它的每一个方法和性质都是static
(Shared
)。
带有静态(Shared)成员的类正是这样:带有静态(Shared)成员的类别。您不必创建它的实例来访问静态(Shared)方法,但您需要访问它的任何实例成员。
您也可以在模块中定义Sub New()
,它将成为模块的静态构造函数。第一次尝试调用模块上的成员时,将调用静态构造函数来初始化静态类。
使用"shared"使类子或函数成为"static"(在C#意义上)。在VB中,在这种情况下,共享就像静态的同义词。