c# - Marcado de una clase estática en VB.NET
(5)
Como acaba de decir en una question y answer recientes, no puede heredar de una clase estática. ¿Cómo se hacen cumplir las reglas que acompañan a las clases estáticas dentro de VB.NET? Como el marco es compatible entre C # y VB, tendría sentido que hubiera una manera de marcar una clase estática, pero no parece haber una manera.
Casi ahí. También debes evitar la creación de instancias.
NotInheritable Class MyStaticClass
'''''' <summary>
'''''' Prevent instantiation.
'''''' </summary>
Private Sub New()
End Sub
Public Shared Function MyMethod() As String
End Sub
End Class
- Shared es como un método de clase estática.
- NotInheritable es como sellado.
- Private New es como una clase estática no se puede instanciar.
Ver ... MSDN - Clases estáticas y miembros estáticos de la clase
Desde el punto de vista de CLR, la clase estática C # es solo clase "sellada" y "abstracta". No puede crear una instancia porque es abstracta y no puede heredar de ella porque está sellada. El resto es solo algo de compilación mágica.
Módulo == clase estática
Si solo quiere una clase que no puede heredar, use una clase NotInheritable. Pero no será estático / Compartido. Puede marcar todos los métodos, propiedades y miembros como Compartidos, pero eso no es estrictamente lo mismo que una clase estática en C #, ya que el compilador no lo aplica.
Si realmente desea el vb.net equivalente a una clase estática de C #, use un Módulo. No se puede heredar y todos los miembros, propiedades y métodos son estáticos / compartidos.
Puede crear clases estáticas en vb.net. La solucion es
Friend NotInheritable Class DB
Public Shared AGE As Integer = 20
End Class
La variable AGE es pública estática, puede usarla en otro código como este
Dim myage As Integer = DB.AGE
Amigo = público, NotInheritable = estático
Si solo desea crear una clase que no pueda heredar, en C # puede usar Sealed y en VB.Net usar NotInheritable.
El equivalente de VB.Net de estática es compartido.