c#: (Statique) Classe les Variables de Niveau
C'est certainement un peu une question de noob, mais mes recherches donc loin n'ai pas effacé la question pour moi.
Un veux une console application de stocker plusieurs variables de niveau classe. Dans un cas, je veux stocker une copie de mon objet connexion, que je vais utiliser dans différents endroits au sein de la classe. Dans un autre cas, je veux stocker un type simple, une valeur int en réalité, ce qui est uniquement destiné à être utilisé en interne (n'a pas besoin d'être une propriété).
Il semble que si je ne me préciser ces variables statiques, je ne peux pas les utiliser dans main (), et au-delà.
Ma compréhension des objets statiques, c'est que leurs valeurs sont partagées par toutes les instances d'un objet. En fonctionnement normal, je m'attends à de leurs à une seule instance de mon application, donc, cette question n'est pas un problème - mais il a mis en évidence un manque de compréhension de ma part de quelque chose qui est assez fondamental.
Dans le cas, de mon objet connexion, j'ai pu voir un cas pour la statique - le partage d'un journal à travers plusieurs instances pourrait être un avantage. Cependant, il pourrait ne pas être le cas... Dans le cas de mon int, je serais certainement jamais voulez que ce soit partagée entre les instances.
Donc...
- Suis-je incompréhension de la théorie derrière tout cela?
- Est-il une manière différente, je devrais être de la déclaration et de l'aide de ma classe les variables de niveau?
- Devrais-je éviter de les utiliser? Je pourrais simplement de transmettre des valeurs comme paramètres de la fonction à la fonction, mais il semble peu beaucoup de travail pour pas évident de gain.
EDIT: OK, le message est clair: ma compréhension de la statique était plutôt correcte, mais le problème était celui de la structure et de la démarche. Merci pour vos réponses.
- Pas exactement et de la réponse, mais regardez ça: en.wikipedia.org/wiki/Singleton_pattern
- Votre méthode main() est statique, c'est pourquoi vous ne pouvez accéder à des méthodes statiques & variables d'elle.
- Les variables statiques sont partagées par toutes les instances d'un objet à l'intérieur du domaine d'application. Chaque instance de votre application se trouve dans un autre domaine d'application.
- c'est une précision importante, - grâce.
Vous devez vous connecter pour publier un commentaire.
Juste encapsuler votre application dans une autre classe, qui vous de créer et d'exécuter sur le
Main
méthode:Vous pouvez toujours faire le journal champ statique si vous le souhaitez.
Vous devrait être la création d'une classe à l'extérieur de votre fonction Principale, et ensuite, la création d'une instance de cette classe de l'intérieur Principal.
Par exemple
Ici, le problème est plus ou moins purement syntaxique: Parce qu'une méthode statique ne peut accéder à des champs statiques, et la
Main()
méthode doit être statique, cela implique que les variables utilisées à être statique. Vous n'avez jamais créer une instance de la MyConsoleApp classe.Pas vraiment beaucoup de théorie ici, seulement pragmatique des exigences...
Thomas