Een klasse statisch markeren in VB.NET

Zoals zojuist vermeld in een recente vraagen antwoord, je kunt niet overnemen van een statische klasse. Hoe handhaaft men de regels die met statische klassen binnen VB.NET samengaan? Aangezien het framework compatibel is tussen C# en VB, zou het logisch zijn dat er een manier zou zijn om een ​​klasse statisch te markeren, maar er lijkt geen manier te zijn.


Antwoord 1, autoriteit 100%

Module == statische klasse

Als je alleen een klasse wilt die je niet kunt erven, gebruik dan een NotInheritableklasse; maar het zal niet statisch/gedeeld zijn. Je zou alle methoden, eigenschappen en leden kunnen markeren als Shared, maar dat is niet strikt hetzelfde als een statische klasse in C#, omdat het niet wordt afgedwongen door de compiler.

Als je echt het VB.Net-equivalent van een statische C#-klasse wilt, gebruik dan een Module. Het kan niet worden overgenomen en alle leden, eigenschappen en methoden zijn statisch/gedeeld.


Antwoord 2, autoriteit 44%

Bijna daar. Je moet ook instantiatie voorkomen.

NotInheritable Class MyStaticClass
    ''' <summary>
    ''' Prevent instantiation.
    ''' </summary>
    Private Sub New()
    End Sub
    Public Shared Function MyMethod() As String
    End Function
End Class
  • Gedeeld is als methode van statische klasse.
  • NotInheritable is als verzegeld.
  • Privé Nieuw is alsof statische klasse niet kan worden geïnstantieerd.

Zie:
MSDN – Statische klassen en statische groepsleden


Antwoord 3, autoriteit 5%

Als je alleen een klasse wilt maken die je niet kunt erven, kun je in C# Sealed gebruiken en in VB.Net NotInheritable.

Het VB.Net-equivalent van static wordt gedeeld.


Antwoord 4, autoriteit 3%

Je kunt een statische klasse maken in vb.net. De oplossing is

Friend NotInheritable Class DB
    Public Shared AGE As Integer = 20
End Class

AGE-variabele is openbaar statisch, je kunt het op dezelfde manier in andere code gebruiken

Dim myage As Integer = DB.AGE

Vriend = openbaar, NotInheritable = statisch


Antwoord 5, autoriteit 2%

Vanuit het CLR-oogpunt is de statische klasse van C# gewoon “verzegelde” en “abstracte” klasse. U kunt geen instantie maken, omdat deze abstract is, en u kunt er niet van erven omdat deze is verzegeld. De rest is slechts wat compiler-magie.

Other episodes