Déclarant mondiale, les variables statiques
Je suis en train de définir une variable globale dans Visual Studio, mais je ne l'ai pas statique. Est-il possible pour moi de définir la variable statique et de la partager sur les différentes méthodes, ou d'une certaine façon pour enregistrer la variable à chaque fois qu'il change?
- Statique dans VB.NET est
Shared
. L'appeler de cette façon:ClassName.SharedVariableName
. Il doit êtrePublic
être accessible de l'extérieur de cette classe. Notez que vous ne partagez pas seulement sur les méthodes, mais aussi à travers les différents threads qui peuvent causer des serrures ou des résultats incorrects (f.e. dans ASP.NET). - Merci pour le rassurer sur le "Partage" d'être statique. Il semble que je suis confronté à une erreur d'exécution dans mon travail, ou utilisez le "partage" forme de variable . Pourriez-vous svp me donner un exemple?
- Vous pouvez poster votre code
Vous devez vous connecter pour publier un commentaire.
Vous avez deux options:
1 - Créer une classe qui contient une variable Partagée (c'est le même d'une variable statique en c#)
Vous pouvez ensuite accéder à ce en utilisant le nom de la classe:
2 - Créer un module (cela ressemble à une classe statique en c#)
Vous pouvez alors accéder à cette valeur dans le code comme ceci:
Si vous utilisez le numéro 1 option présentée par @Matt Wilko, vous pouvez référencer le membre partagé soit par le biais d'un objet instance de la classe ou par la référence à la classe sans une référence d'objet. L'un et l'incrément de la même variable et, par conséquent, font référence à la même valeur. Bien que, le compilateur Visual Studio fournit un avertissement au sujet de la référence à une instance d'objet et dit qu'il ne sera pas évalué, il a encore compile. Le compilateur de la recommandation est d'utiliser le nom de la classe.
Insérez le code suivant dans un formulaire et appelez IncrementIntegers() à partir d'un bouton de la procédure d'événement click et vous verrez que myGlobalVariables.Foo et GlobalVariables.Foo fois de retour 20.
Remarque qu'avec l'option 1, Toto doit être qualifié par le nom de la classe ou un nom d'objet. Avec l'option 2, c'est un module et non pas une classe de sorte qu'un objet de référence ne peut pas être créé. La variable publique peut être référencé sans la qualifier avec le nom du module à moins d'une variable avec le même nom apparaît dans un autre module, dans lequel cas le compilateur jeter un conflit de nom de l'erreur. Par exemple,
Supprimer Module2 et Foo peut être appelé sans réserve à partir de n'importe où.
Avec Module2 présent, Toto doit être qualifié par le nom que de deux points de différentes variables et représentent différentes et indépendantes des valeurs.