J'essaie de définir une variable globale dans Visual Studio, mais je ne peux pas la rendre statique. Y a-t-il un moyen pour moi de définir la variable comme statique et de la partager entre différentes méthodes, ou de sauvegarder la variable chaque fois qu'elle change?Déclaration de variables statiques globales
Répondre
Vous avez deux options:
1 - Créer une classe qui contient une variable partagée (ce qui est la même une variable statique C#)
Public Class GlobalVariables
Public Shared Bar As String
End Class
Vous pouvez accéder à ce en utilisant le nom de classe :
GlobalVariables.Bar = "Hello world"
2 - Créer un module (ce qui est semblable à une classe statique C#)
Public Module GlobalVariables
Public Bar As String
End Module
Vous pouvez accéder à cette valeur dans le code comme ceci:
Bar = "Goodbye cruel world"
Ce que j'ai fait était de placer la variable Shared dans la même classe que les méthodes utilisées, et de l'appeler le nom de la variable sans le nom de la classe. dans classname.variablename car il était dans la même classe. Serait-ce l'erreur? Aussi, est-ce que je mets une méthode comme si vous trouviez une fonction de clic de bouton (par exemple)? – user3568182
Si vous utilisez le numéro 1 option présentée par @ Matt Wilko, vous pouvez référencer le membre partagé soit par une instance d'objet de la classe ou en référençant la classe sans référence d'objet. Les deux pointent vers et incrémentent la même variable et font donc référence à la même valeur. Bien que le compilateur Visual Studio fournisse un avertissement concernant le référencement d'une instance d'objet et indique qu'il ne sera pas évalué, il compile toujours. La recommandation du compilateur est d'utiliser le nom de la classe.
Public Class GlobalVariables
Public Shared Foo As Integer
End Class
Insérer ce qui suit dans un formulaire et appelez IncrementIntegers() à partir d'un bouton procédure d'événement de clic et vous constaterez que myGlobalVariables.Foo et GlobalVariables.Foo retour à la fois 20.
Private Sub IncrementIntegers()
Dim myGlobalVariables As New GlobalVariables
myGlobalVariables.Foo = 0
GlobalVariables.Foo = 0
myGlobalVariables.Foo += 10
GlobalVariables.Foo += 10
Dim iLocalInt1 = myGlobalVariables.Foo
MessageBox.Show("myGlobalVariables.Foo = " & iLocalInt1.ToString)
Dim iLocalInt2 = GlobalVariables.Foo
MessageBox.Show("GlobalVariables.Foo = " & iLocalInt2.ToString)
End Sub
Notez que avec option 1, Foo doit être qualifié avec le nom de la classe ou un nom d'objet. Avec l'option 2, c'est un module et non une classe donc une référence d'objet ne peut pas être créée. La variable publique peut être référencée sans la qualifier avec le nom du module sauf si une variable du même nom apparaît dans un autre module auquel cas le compilateur avec une erreur de conflit de nom. Par exemple,
Public Module1
Public Foo As String
End Module
Public Module2
Public Foo As String
End Module
Supprimer Module2 et Foo peuvent être appelés non qualifiés de n'importe où.
Foo = "Happy birthday"
Avec présent Module2, Foo doit être qualifié avec le nom à la fois comme le point à la variable différents et représentent des valeurs différentes et indépendantes.
Module1.Foo = "Goodbye cruel world"
Module2.Foo = "Hello new world"
Cela a été répondu et résolu, merci à tous. – user3568182
- 1. Variables globales déclaration multiple
- 2. Variables globales dans les classes PHP statiques
- 3. Effets secondaires de variables statiques globales
- 4. Déclaration de variables globales dans ActionScript?
- 5. Déclaration de variables globales dans Objective-C
- 6. Variables globales vs statiques en PHP
- 7. Méthodes statiques ou non? Variables globales?
- 8. ASP.NET C# Les variables statiques sont globales?
- 9. Rendre les variables statiques globales multithread safe
- 10. déclaration des variables globales dans yacc
- 11. variables de chaîne const statiques globales en Objective-C
- 12. Encapsuler les variables de configuration globales comme statiques?
- 13. Comment utiliser les variables globales statiques dans JAVA
- 14. Afficher les variables globales/statiques/héritées dans le débogueur Eclipse
- 15. Comment voir les variables statiques ou globales dans Eclipse CDT?
- 16. Objectif C - Où gérez-vous les variables statiques globales?
- 17. variables statiques/globales dans la bibliothèque partagée en langage C
- 18. Unités de traduction statiques, globales et multiples
- 19. Variables globales?
- 20. variables globales
- 21. Variables globales dans l'objectif C
- 22. Variables globales Excel VBA
- 23. Variables globales dans OpenCV
- 24. Variables statiques dans Android
- 25. Utilisation de variables globales
- 26. Définition de variables globales
- 27. Nombre de variables globales
- 28. Variables de titre globales
- 29. Comment les variables statiques/non statiques globales sont-elles mutilées dans c?
- 30. Utilisation de variables publiques globales
Statique dans VB.NET est 'Shared'. Appelez-le de cette façon: 'ClassName.SharedVariableName'. Il doit être public pour être accessible depuis l'extérieur de cette classe. Notez que vous ne le partagez pas uniquement entre les méthodes mais également entre différents threads qui peuvent provoquer des verrous ou des résultats incorrects (par exemple, dans ASP.NET). –
Merci pour l'assurance sur "Shared" étant statique. Il semble que je rencontre une erreur d'exécution dans mon travail ou que j'utilise la forme de variable "Partagé". Pourriez-vous s'il vous plaît me donner un exemple? – user3568182
Pouvez-vous poster votre code –