Les différents types de variables en C#
type élémentaire | intervalle de variation | nombre de bits |
bool | false , true | 1 bit |
byte | entier non signé : 0 ... +255 | 8 bits |
sbyte | entier signé : -128 ... +127 | 8 bits |
char | caractères unicode (valeurs de 0 à 65536) | 16 bits |
short | entier signé -2^15-1... +2^15-1 | 16 bits |
ushort | entier non signé 0... +2^16-1 | 16 bits |
int | entier signé -2^31... +2^31-1 | 32 bits |
uint | entier non signé 0... +2^32-1 | 32 bits |
long | entier signé long -2^63... +2^63-1 | 64 bits |
ulong | entier non signé long 0... +2^64-1 | 64 bits |
float | Virgule flottante simple précision ~3.4 10^38 | 32 bits |
double | Virgule flottante double précision ~1.8 10^308 | 64 bits |
decimal | Virgule flottante quadruple précision | 128 bits |
Compatibilité ascendante
des types de variables en C#
(conversion implicite sans transtypage obligatoire)
Les types entiers signés :
|
Les types entiers non signés
:
|
Les réels :
|
Visibilité
des variables dans C#
Toute variable déclarée dans un bloc est visible dans ce bloc et dans tous les blocs imbriqués dans ce bloc. |
En C# les blocs sont constitués par :
|
Le masquage des variables n'existe que pour les variables déclarées dans des méthodes :
Il est interdit de redéfinir une variable déjà déclarée dans une méthode soit :
Il est interdit
de redéfinir dans un bloc (if,
while, for, do) une variable déjà déclarée
dans une bloc englobant cette boucle.
|
Exemple de visibilité dans une classe
class ExempleVisible {
static int a = 100;
} |
La variable "a" définie dans static inta
=100; :
- Est une variable de la classe ExempleVisible. - Elle est visible dans methode1 et dans methode2. C'est elle qui est utilisée dans methode1 pour évaluer l'expression x+a. - Dans methode2, elle est masquée par le paramètre
du même nom qui est utilisé pour évaluer l'expression
x+a.
|
Exemple1 de variables locales à une méthode
class ExempleVarLoc1 {
static int a = 100;
|
La variable de classe "a" définie dans
static int a = 10; est masquée dans les deux méthodes methode1 et methode2. - Dans la méthode methode1, c'est la variable locale long
a
= 123456 qui masque la variable de classe
static int a.
- Dans la méthode methode2, char car ='u'; est une variable locale à la méthode methode2, le paramètre int a masque la variable de classe static int a. Les variables locales char car n'existent
que dans la méthode où elles sont définies, les variables
"car" de methode2 et "car" de methode1
n'ont aucun rapport
entre elles, bien que portant le même nom.
|
Exemple2 de variables locales à une boucle et une instruction
class Visible4 {
|
![]() La variable de classe "a" définie dans static int a = 10; est masquée dans la méthode f dans le bloc imbriqué for. La variable de classe "b" définie dans static int b = 2; est masquée dans la méthode methode dans le bloc imbriqué if. Dans l'instruction { intb = 8; b = 5-a+i*b; } , c'est la variable b interne à ce bloc qui est utilisée car elle masque la variable b de la classe. Dans l'instruction else Visible4.b = 5-a+i*Visible4.b; , c'est la variable b de la classe qui est utilisée (car la variable int b = 8 n'est plus visible ici) Le compilateur C# a besoin malgré tout de l'accès complet par "Visible4.b" sinon il génère un message d'erreur de conflit potentiel (inefficacité de la portée dans C#). Mêmes remarques pour l'instruction :
|