正如最近刚提及的问题和答案,你不能从一个静态的类继承。如何执行VB.NET中与静态类一起的规则?由于该框架在C#和VB之间是兼容的,因此将有一种方法可以将类标记为静态是有意义的,但是似乎没有办法。
Answers:
模块==静态类
如果您只想要一个不能继承的类,请使用一个NotInheritable
类;但不会是静态/共享的。您可以将所有方法,属性和成员都标记为Shared
,但这与C#中的静态类并不完全相同,因为它不是由编译器强制执行的。
如果您确实希望VB.Net等效于C#静态类,请使用Module
。它不能被继承,并且所有成员,属性和方法都是静态/共享的。
快好了。您还必须防止实例化。
NotInheritable Class MyStaticClass
''' <summary>
''' Prevent instantiation.
''' </summary>
Private Sub New()
End Sub
Public Shared Function MyMethod() As String
End Function
End Class
请参阅:
MSDN-静态类和静态类成员
如果只想创建一个无法继承的类,则可以在C#中使用Sealed,在VB.Net中使用NotInheritable。
等效于VB.Net的static是共享的。
从CLR的角度来看,C#静态类只是“密封”和“抽象”类。您不能创建一个实例,因为它是抽象的,并且由于它是密封的,因此您不能从该实例继承。剩下的只是一些编译器魔术。