2011-05-22 4 views
0

Je développe un programme en C# et j'ai besoin d'une variable mutable qui est disponible pour toutes les classes de mon programme. Par exemple, je veux le définir à une valeur par défaut, disons false, lorsque le programme démarre, puis pouvoir le changer en true plus tard lorsqu'une action se produit. La valeur true doit ensuite être transmise lorsque d'autres classes le lisent.Variable Mutable disponible pour toutes les classes?

Comment cela peut-il être réalisé?

+4

Propriété statique? – driis

+0

Est-ce une question? –

+0

Je suis nouveau en C# - mon problème était que je n'arrivais pas à comprendre comment accéder à la variable statique déclarée dans la classe 'Program'. Il s'avère que c'était aussi simple à 'Program.myVar'. Duh! – Johnny

Répondre

2

Que diriez-vous statique ?:

public static class MyProps 
{ 
    public static bool MyProp { get; set; } 
} 

Dans votre code:

MyProps.MyProp = true; 

Aucune initialisation nécessaire parce que booléens initialisent toujours false.

0

Il semble que vous ayez besoin d'un membre statique dans une classe quelque part.

class MyClass { 
    static bool ms_MyStatic = false; 
} 

... vous pouvez référencer ceci comme MyClass.ms_MyStatic où vous voulez.

1

Trois options:

  • en faire une variable d'instance d'un type particulier, et assurez-vous que chaque classe a accès à la même instance
  • faire une variable statique d'un type particulier
  • Quelque part entre: en faire une variable d'instance dans un singleton type.

Personnellement, je serais favorable à la première approche en conjonction avec l'injection de dépendance - mais pensez à quelles classes vraiment besoin de savoir à ce sujet. Est-ce vraiment chaque classe dans votre programme?

L'état global (via des variables statiques) et les singletons rendent le code plus difficile à tester en général.

Aussi, je voudrais certainement en faire une variable privée et avoir une propriété pour y accéder.

Questions connexes