c# vb.net

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.