Pourquoi le litteral « null » ne fonctionne pas ?
Le mot clé null
est un littéral qui représente une référence null, c’est-à-dire qui ne fait pas référence à un objet. null
est la valeur par défaut des variables de type référence. Les types valeur ordinaires ne peuvent pas être Null. Enfin ce n’est pas tout a fait vrai , il existe aussi types valeur Nullable. Consultez Types Nullable.
Si l’on veut faire simple « null » s’applique en rêgle générale aux objets et non aux variables.
int x;
void Start()
{
if (x == null) Debug.Log("x est null");
}
Quand vous déclarez une variable et que vous ne luis assignez aucune valeur, elle n’est pas null , C# attribue une valeur par défaut selon les différents types.
La valeur par défaut dans l’exemple ci dessus sera la valeur 0 (voir la documentation)
Donc vous l’aurez compris x n’est pas null, il à bien une valeur qui est 0 ! pour preuve :
int x;
void Start()
{
Debug.Log("La valeur de x est de " + x);
}
La réponse de la console :
Quand utiliser le litteral « null » ?
Je vous ai dit plus haut : « Le mot clé null
est un littéral qui représente une référence null, c’est-à-dire qui ne fait pas référence à un objet. null
est la valeur par défaut des variables de type référence »
Pour simplifier le mot clé « null » fait référence à un objet sans valeur.
GameObject obj;
void Start()
{
if (obj == null) Debug.Log("Obj est null");
}
Message de la console :
En effet, nous avons déclaré un GameObject mais aucune valeur ne lui ai assigné. Il est donc null !
L’erreur qui est souvent commise est de faire l’ amalgame entre null et 0(zéro) :
int[] tableau1;
int[] tableau2 = new int[10];
void Start()
{
if (tableau1 == null)
{
Debug.Log("Le tableau1 est null");
}
if(tableau2[0]==0)
{
Debug.Log("L'index 0 du tableau2 a pour valeur zero");
}
}
Message de la console :
- Le tableau1 à était déclaré mais pas initialisé, aucun type ni aucune longueur n’ont étaient définit. il renvoi bien la valeur null.
- Le tableau2 à était initialisé, il n’est pas null, les 10 éléments contenus dans ce tableau possèdent une valeur par défaut.
Poster un Commentaire
Vous devez vous connecter pour publier un commentaire.