Como se acaba de indicar en un reciente question y answer, no se 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.Marcado de una clase estática en VB.NET
Respuesta
== Módulo de clase estática
Si lo que desea es una clase que no se puede heredar, utilizar una clase de 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 C#, use un Módulo. No se puede heredar y todos los miembros, propiedades y métodos son estáticos/compartidos.
Si solo desea crear una clase que no pueda heredar, en C# puede usar Sealed y en VB.Net usar NotInheritable.
El equivalente de estática de VB.Net es compartido.
No puede marcar una clase como compartida. –
marca sus variables y funcionalidades como compartidas, tal como lo haría en la clase estática de C#. Marcar como NotInheritable lo sella. – Shimmy
Desde el punto de vista de CLR, la clase estática C# es solo clase "cerrada" 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.
Puede crear clases estáticas en vb.net. La solución es
Friend NotInheritable Class DB
Public Shared AGE As Integer = 20
End Class
variable edad es pública estática, que se puede utilizar en otro tipo de código al igual que este
Dim myage As Integer = DB.AGE
amigo = pública, NotInheritable = estática
Amigo! = Público, Amigo = interno – Altair
Casi allí. 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 método de clase estática.
- NotInheritable es como sellado.
- Privado Nuevo es como una clase estática no se puede crear una instancia.
+1 para la muestra del código real –
- 1. serializar una clase estática?
- 2. Inyectando una dependencia en una clase estática
- 3. ¿Acceder a una propiedad estática de una clase genérica?
- 4. ¿Métodos de extensión en una clase estática?
- 5. que imita una clase estática
- 6. generar eventos en una clase estática
- 7. Método principal en una clase interna estática.
- 8. Prueba de una clase con una dependencia clase estática/método
- 9. Alambre de resorte una clase estática
- 10. clase estática vs clase singleton
- 11. Asignación de clase estática
- 12. Clase estática interna en Java
- 13. ¿Cómo puedo crear una nueva instancia de clase de una clase dentro de una clase (estática)?
- 14. Por qué tienen clase estática pública dentro de una clase
- 15. clase estática y singleton
- 16. "clase estática en Objective C"
- 17. clase abstracta estática
- 18. Miembros de clase ambiguos en vb.net
- 19. Anónimo inicialización de clase en VB.Net
- 20. Java: ¿Clase estática?
- 21. Java: ¿cómo "reiniciar" una clase estática?
- 22. Serialización de clase interna estática
- 23. utilizando una interfaz estática int en una estructura/clase
- 24. ¿Es una mala práctica tener estado en una clase estática?
- 25. VB.NET: ¿Cómo hacer referencia al módulo VB.NET?
- 26. ¿Es seguro bloquear una variable estática en una clase no estática?
- 27. Método estático de una clase estática frente a un método estático de una clase no estática (C#)
- 28. VB.net Compartido vs C# diferencias de accesibilidad estática, ¿por qué?
- 29. caché de clase estática en Silverlight
- 30. Diferencia entre clase simple y clase estática?
sí un módulo es una clase estática. Simplemente lea sobre los métodos de extensión y MS le dirá lo mismo. – chrissie1
Interesante. No he jugado con extensiones en VB. – MagicKat
Me retracto de mi comentario anterior. Estaba mirando un módulo en el reflector y el IL lo muestra como sellado. – MagicKat