正如最近在question和answer中所述,您无法从静态类继承。如何在VB.NET中强制执行与静态类一起使用的规则?由于框架在C#和VB之间是兼容的,因此有一种方法可以将类标记为静态,但似乎没有办法。
答案 0 :(得分:114)
模块==静态类
如果您只想要一个无法继承的类,请使用NotInheritable类。但它不会是静态的/共享的。您可以将所有方法,属性和成员标记为Shared,但这与C#中的静态类并不完全相同,因为它不是由编译器强制执行的。
如果您确实希望vb.net等效于C#静态类,请使用模块。它不能被继承,所有成员,属性和方法都是静态/共享的。
答案 1 :(得分:42)
几乎就在那里。你也必须防止实例化。
NotInheritable Class MyStaticClass
''' <summary>
''' Prevent instantiation.
''' </summary>
Private Sub New()
End Sub
Public Shared Function MyMethod() As String
End Sub
End Class
答案 2 :(得分:6)
如果您只想创建一个无法继承的类,可以在C#中使用Sealed,在VB.Net中使用NotInheritable。
静态的VB.Net等价物。
答案 3 :(得分:3)
您可以在vb.net中创建静态类。解决方案是
Friend NotInheritable Class DB
Public Shared AGE As Integer = 20
End Class
AGE变量是公共静态的,您可以在其他代码中使用它,就像这样
Dim myage As Integer = DB.AGE
Friend = public,NotInheritable = static
答案 4 :(得分:2)
从CLR的角度来看,C#静态类只是“密封”和“抽象”类。你不能创建一个实例,因为它是抽象的,你不能从它继承,因为它是密封的。其余的只是一些编译魔术。