12
votes

Constructeur de classe statique en VB

existe-t-il un moyen de créer un constructeur pour une classe partagée dans vb.net? Je le fais tout le temps en C # comme suit, mais je ne peux pas sembler l'avoir à travailler dans vb.net. XXX

Lorsque le code suivant est exécuté, le constructeur sera appelé . xxx

peut un statique ( partagé ) a même un constructeur dans vb.net?


5 Réponses :


2
votes

Avez-vous essayé:

Class someClass

    Public Shared somePublicMember As String

    Shared Sub New()
        messageBox.show("I just constructed a static class")
    End Sub
End Class


0 commentaires

0
votes

Vous ne pouvez pas déclarer une classe partagée dans VB.NET. Vous avez deux options:

  • Utilisez des modules. Dans ce cas, vous avez besoin de init , que vous devez appeler avant tout.
  • Utilisez des classes régulières avec des méthodes partagées (ma préférence), vous pouvez alors avoir partagé Sub Nouveau.

4 commentaires

C'est ce que j'avais peur de. Si vous utilisez la classe normale avec une méthode partagée, vous accéderez aux membres appellera automatiquement le sous-projet partagé?


@Appfzx: Oui, c'est pourquoi je préfère cette approche des modules.


@Ehsanullah en regardant maintenant. Les deux réponses traitent de différents aspects de la question. Impossible d'accepter les deux réponses et celle-ci était en premier lieu. J'ai suscité le vôtre ehsan


Les modules peuvent également avoir un constructeur, vous n'avez donc pas besoin d'appeler explicitement une méthode init.



3
votes

genre de ressemble à un constructeur normal dans vb.net:

Shared Sub New()

End Sub

p>


3 commentaires

@Appfzx: Il ne peut y avoir. Vb.net ne le supporte pas .


@Neolisk, si vous voulez republier votre réponse, je l'accepterai. Je ne sais pas où ça va. J'étais sur le point de cliquer sur Accepter.


@Appfzx: Vous avez un bowvote, alors je pensais que vous ou quelqu'un d'autre ne l'aiment pas. Ici vous allez, je le remets.



23
votes

lire la documentation ici . En vous pouvez faire

Shared Sub New()
...
End Sub


0 commentaires

2
votes

Il n'y a pas de classes statiques / partagées dans VB.net.

Il existe cependant des modules qui fournissent des modules similaires, vous ne pourrez donc pas les instantiez. P>

Votre code équivalent dans VB.NET serait (Testé à l'aide de VS2017): P>

Module someClass
    Public somePublicMember As String

    Sub New()
        messageBox.show("I just constructed a static class (not really) [sic]")
    End Sub
End Module


2 commentaires

Ou utilisez une classe, sans autre que Membres partagés, qui a Sous-Nouveau () ... et Sous-nouveau () ... . Cela empêche l'instanciation et maintient la portée. C'est-à-dire que ses membres doivent être appelés via someclass.somepublicmember au lieu d'un espace de nom global polluant.


Afin d'éviter de polluer l'espace de noms global, enveloppez le module à l'intérieur d'un espace de noms: nom du module. Dans l'exemple ci-dessus, c'est une somclasse.