Cela semble fondamental mais je trouve cela assez trivial. Comment recommanderez-vous simplement définir une variable globale avec une classe statique (I.e. Console-Demande)? P>
Pour vous donner un peu plus d'arrière-plan, la méthode principale appelle des événement personnalisés que j'espère obtenir / définir les variables. P>
Des idées ou des suggestions que vous avez sont appréciées. P>
3 Réponses :
La manière la plus simple est qui crée un domaine statique public. Un peu mieux est: p> qui crée une propriété statique publique. P> p>
Pourquoi la propriété est-elle un peu meilleure?
@ Illidans4, Stackoverflow.com/Questions/653536/Difenceference-Between-proper Ty-and-Field-in-C-sh ARP-3-0 / 653799
Je connais la différence, mais les propriétés statiques sont-elles objectivement meilleures que les champs statiques?
@ Illidans4, pour les données publiques, oui.
pas sûr de 100%, mais vous pouvez essayer un singleton pour contenir vos variables. Sans savoir ce que vous essayez d'accomplir qu'il est difficile de recommander si cette solution ne vous maudirait pas sur la route. p>
Il n'y a pas de variables globales en C #. Une variable est toujours appliquée localement. L'unité fondamentale du code est la classe et dans une classe que vous avez des champs, des méthodes et des propriétés. P>
vous peut EM> imiter une "variable globale" en faisant un champ statique public ou une propriété dans une classe, mais vous ne devez pas em>. C # rend cela difficile pour une très bonne raison; Les variables globales sont un pur mal. Ils violent plusieurs bons principes de la conception OO - encapsulation, couplage lâche et cohésion élevée, pour n'en nommer que quelques-uns. P>
Je réalise que c'est une question débutante, mais je pense que c'est parce que em> c'est une question débutante qu'il est si important de le dire. C'est le meilleur moment pour commencer à apprendre ce que les tactiques sont activement découragées ou même dangereuses dans C #, et en utilisant un champ / une propriété statique en tant que variable globale en se situe environ six. Il existe des utilisations légitimes pour ces constructions, mais le passage des données autour d'un endroit à l'autre n'est pas l'un d'entre eux. P>
Si deux classes différentes dépendent des mêmes informations, transmettez les informations de la source à la destination em>. Cela se fait généralement par le constructeur ou comme argument de la méthode appelée. Vous devriez toujours avoir un seul et un seul cas qui "possède" cette information; Fabrication d'informations "globales" signifie que vous ne pouvez pas raisonner sur qui ou ce qui pourrait en dépendre à tout moment donné. P>
S'il vous plaît considérez cela et essayez de penser à d'autres moyens de partager les informations que vous souhaitez stocker dans une variable globale (c'est-à-dire en leur fournissant un argument à un constructeur ou à un procédé). Si vous n'êtes pas sûr, postez un exemple de ce que vous essayez de faire et nous allons aider. P>
Merci d'avoir élaboré .. c'était très utile.
En supposant que j'ai un couple de threads fonctionnant simultanément et à l'écart du fil principal et maintenant, quand il y a une défaillance de ces threads, je souhaite augmenter le nombre de défaillances. Comment cela serait-il fait alors?
@ user20358: Ce n'est pas vraiment assez d'informations pour recommander une solution. Que font les threads? Pourquoi échoueraient-ils? Quelles sont les conséquences de l'échec? Que fait précisément le point de compter i>, par opposition à leur enregistrement ou à prendre une action de suivi? Vous devriez clarifier votre problème et poser une nouvelle question.
^ Dans mon cas, je suis incrémenté le comptoir avec chaque fil créé, puis décrément lorsque chacun finit et en attente de tous pour terminer avant d'exécuter une autre commande.
Je recommanderais personnellement effacer la phrase «variable globale» de votre vocabulaire.
Pour une référence future, quelque chose qui est trivial est quelque chose que vous trouvez simple.