/ / Variables globales incorrectes - c #

Variables globales mauvaises - c #

Après la lecture de cet article et de certains exemples, je ne comprends toujours pas ce que signifient les variables globales. Donc, disons que les variables privées de votre classe sont globales?

http://www.c2.com/cgi/wiki?GlobalVariablesAreBad

Alors quelqu'un peut-il m'expliquer cela en termes simplesle contexte. Est-ce que cela signifie même des champs privés au sommet de votre classe? Je ne suis pas clair sur la définition d'une "variable globale" afin de pouvoir distinguer si je "fais quelque chose de" mauvais "dans mes classes.

Réponses:

11 pour la réponse № 1

En C #, un exemple de variable globale serait une variable statique publique sur une classe publique. Tout le programme pouvait lire / écrire dessus et serait partagé entre les threads.


5 pour la réponse № 2

Un champ privé de votre classe serait généralement appelé "variable de niveau de classe". Ce n'est pas global pour votre application car seule votre classe y a accès.

Une variable globale est une variable à laquelle tout élément de votre programme peut accéder, quelle que soit son étendue.

Un exemple de variable globale serait quelque chose comme le Application objet dans ASP.Net (une instance statique publique d'une classe HttpApplication). Tout objet, à tout moment, dans n’importe quel fichier code-behind, peut avoir accès au Application objet à rechercher cette valeur. En règle générale, stocker des valeurs dans le Application L'objet est une mauvaise idée à moins de savoir vraiment ce que vous faites, pour toutes les raisons mentionnées dans l'article que vous avez lié.


2 pour la réponse № 3

Non. Les variables globales sont des variables disponibles pour l'ensemble de votre programme. Les variables de membre privé sont en réalité l'opposé des variables globales. En C / C ++, une variable globale serait une variable déclarée en dehors d'une déclaration de fonction ou de classe. En C ++ et Java, une variable statique publique qui n'est pas constante serait également considérée comme une variable globale, car l'ensemble du programme peut y accéder.


0 pour la réponse № 4

En C #, il n’existe vraiment rien qui puisse être appelé une variable "globale". La plus proche serait une variable statique publique, qui est disponible pour toutes les parties du programme à tout moment.


0 pour la réponse № 5

Fondamentalement, il existe d'autres mécanismes pouvant conduire à l'introduction de variables globales:

  • AppDomain.GetData / AppDomain.SetData pair - Obtient / définit la valeur stockée dans le domaine d'application actuel pour le nom spécifié accessible depuis d'autres domaines d'application.
  • Thread.GetData / SetData pair - Obtient / définit la valeur de l’emplacement spécifié sur le thread actuel, dans le domaine actuel du thread actuel.

Comme le dit l'Arcticle, il vaut mieux les éviter.


0 pour la réponse № 6

Je pense que Varialbes défini dans le haut de la classeavec "DIM" toujours classe et non pas global, mais s'ils sont définis comme "PUBLIC" en plus de la classe ou "PUBLIC" dans "MODULE", ils peuvent être "GLOBAL", le BON vous permet d'accéder à ces variables à partir de la solution ALL, le mauvais, ils resteront en mémoire ..