Employer le littéral ‘null’ avec Unity ?

Lorsque l’on débute avec le C# et Unity, une question revient très souvent : Je déclare une variable sans valeur, mais lorsque je test dans le code avec le terme null , ça ne fonctionne pas, rien ne sort sur la console.

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.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.