Valeur de la variable non affectée non annulable (C #)
-
05-10-2019 - |
Question
Juste curieux.
Si vous allez:
string myString;
Sa valeur est nulle.
Mais si vous allez:
int myInt;
Quelle est la valeur de cette variable en C #?
Merci
David
La solution
Tout d'abord, noter que ceci est applicable uniquement pour les champs, et non variables locales - celles qui ne peuvent être lus jusqu'à ce qu'ils aient été affectés, au moins dans C #. En fait, les CLR Initialise pile cadres à 0 si vous avez un jeu de drapeau approprié - que je crois qu'il est par défaut. Il est bien que rarement observable -. Il faut passer par des hacks grotty
La valeur par défaut de int
est 0 - et pour tout type, il est essentiel à la valeur représentée par une configuration de bits complète des zéros. Pour une valeur de type c'est l'équivalent d'appeler le constructeur parameterless, et pour une référence de type c'est nulle.
Fondamentalement, le CLR efface la mémoire propre avec des zéros.
Ceci est également la valeur donnée par default(SomeType)
pour tout type.
Autres conseils
int par défaut est 0
La valeur par défaut est 0 int.
Voir ici pour la liste complète des valeurs par défaut par type: http: // msdn.microsoft.com/en-us/library/83fhsxwc.aspx
Voici un tableau des valeurs par défaut pour les types de valeurs en C #: http://msdn.microsoft.com/en-us/library/83fhsxwc. ASPX Types de référence valeur par défaut est généralement nulle.
chaîne est un type de référence. Int est un type de valeur. Les types de référence sont tout simplement un pointeur sur la pile dirigée vers le segment de mémoire, qui peut ou non contenir une valeur. Un type de valeur est juste la valeur sur la pile, mais il doit toujours être à quelque chose.
La valeur d'une variable non initialisée de type T
est toujours default(T)
. Pour tous les types de référence c'est nulle, et pour les types valeur voir le lien @Blorgbeard affiché (ou écrire du code pour le vérifier).