existe-t-il un moyen de créer un constructeur pour une classe code> partagée code> 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. Lorsque le code suivant est exécuté, le constructeur sera appelé . P> peut un statique code> (
partagé code>) a même un constructeur dans vb.net? p> p>
5 Réponses :
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
Vous ne pouvez pas déclarer une classe partagée dans VB.NET. Vous avez deux options: p>
init code>, que vous devez appeler avant tout. Li>
- Utilisez des classes régulières avec des méthodes partagées (ma préférence), vous pouvez alors avoir partagé Sub Nouveau. Li>
ul>
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.
genre de ressemble à un constructeur normal dans vb.net:
Shared Sub New() End Sub
p>
@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.
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
Ou utilisez une classe, sans autre que Membres code> partagés, qui a
Sous-Nouveau () ... code> et
Sous-nouveau () ... code >. Cela empêche l'instanciation et maintient la portée. C'est-à-dire que ses membres doivent être appelés via
someclass.somepublicmember code> 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.
Dupliqué possible de Comment implémenter le constructeur de classe dans Visual Basic?