Comment déclarer une variable pour que chaque classe (* .cs) puisse accéder à son contenu, sans référence d'instance?
101
Dans C#
vous ne pouvez pas définir de vraies variables globales (dans le sens où elles n'appartiennent à aucune classe).
Cela étant dit, l'approche la plus simple que je connaisse pour imiter cette fonctionnalité consiste à utiliser a static class
, comme suit:
public static class Globals
{
public const Int32 BUFFER_SIZE = 512; // Unmodifiable
public static String FILE_NAME = "Output.txt"; // Modifiable
public static readonly String CODE_PREFIX = "US-"; // Unmodifiable
}
Vous pouvez ensuite récupérer les valeurs définies n'importe où dans votre code (à condition que cela fasse partie du même namespace
):
String code = Globals.CODE_PREFIX + value.ToString();
Afin de gérer différents espaces de noms, vous pouvez soit:
Globals
classe sans l'inclure dans un spécifique namespace
(afin qu'elle soit placée dans l'espace de noms global de l'application);namespace
.
Il n'y a pas de variable globale en C #. Période.
Vous pouvez avoir des membres statiques si vous le souhaitez:
la source
static
exemple que vous avez fourni ne peut pas vraiment être considéré comme une variable globale.Commencez par examiner si vous avez vraiment besoin d'une variable globale à la place, en l'utilisant de manière flagrante sans tenir compte de votre architecture logicielle.
Supposons qu'il passe le test. En fonction de l'utilisation, Globals peut être difficile à déboguer avec les conditions de concurrence et beaucoup d'autres "mauvaises choses", il est préférable de les aborder sous un angle où vous êtes prêt à gérer de telles mauvaises choses. Alors,
static
classe (pour plus de facilité de gestion).Le plan de base pour une telle classe serait:
Utilisation à partir d'autres classes (dans le même espace de noms)
la source
Une fonctionnalité utile pour cela est
using static
Comme d'autres l'ont dit, vous devez créer une classe pour vos globaux:
Mais vous pouvez l'importer comme ceci afin de ne plus écrire le nom de la classe devant ses propriétés statiques:
la source