valeur par défaut d'une propriété statique de la
J'aime le c#, mais pourquoi ne puis-je faire :
public static bool Initialized { private set; get; }
ou ceci :
public static bool Initialized = false;
mais pas un mélange des deux en une seule ligne ?
J'ai juste besoin de définir le niveau d'accès à ma variable (privé), et j'en ai besoin défini à false au démarrage. Je ne voudrais pas faire que ce qui était ennuyeux privé _Initialized variable, qui serait retourné par la lecture du public Initialisé var. J'aime mon code pour être belle. (NB: ma variable est statique, il ne peut pas être initialisé dans le constructeur).
Grâce
- Il peut être initialisé dans le constructeur si le constructeur est trop statique!
- N'est-ce pas FALSE par défaut de toute façon lol? De toute façon, j'apprécie que vous vous posez la question générale.
- Contrairement aux variables locales, qui ne sont pas définis par défaut, les champs (niveau de la classe de variables) et donc aussi de la sauvegarde des variables de propriétés sont toujours initialisées à leur valeur par défaut, qui est
false
pour les Booléens.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un constructeur statique
Toutefois, comme il a été mentionné par d'autres, la valeur par défaut d'une valeur bool sera fausse.
Depuis C# 6:
Il vous suffit de faire:
Depuis
bool
valeurs sont toujours false par défaut, il n'y a pas besoin de l'initialiser.Si vous avez besoin de cela pour être vrai par défaut, ou d'avoir une logique plus complexe, vous avez besoin pour ce faire, dans un constructeur statique ou de l'utilisation d'un champ de stockage.
Comme pour les "j'aime mon code pour être belle" - personnellement, pour les non-initialisation par défaut, je pense que c'est juste comme "beau":
Cela rend l'initialisation d'un défaut non très visible, ce qui n'est pas une mauvaise chose.
Les deux blocs de code que vous avez mentionnés sont deux choses différentes.
Le premier bloc est un auto mise en œuvre de la propriété defination. C'est sucre syntaxique pour une pleine propriété defination de ce qui ressemble à ceci:
Votre deuxième bloc de code est un membre statique définition. Si vous regardez l'expansion que j'ai donné ci-dessus, vous remarquerez qu'il comprend une salle de membre statique d'une définition. Si vous souhaitez fournir une valeur initiale, vous pouvez le faire ici:
La ligne de propriété de la définition que vous utilisez a été conçu afin de rendre le code un peu plus courte dans le cas le plus fréquent. Si vous voulez faire quelque chose d'autre, vous pouvez utiliser la forme complète du code de la propriété.
Alternativement, vous pouvez descendre un itinéraire complètement différent et l'utilisation d'un constructeur statique. (Voir Corey réponse)