Dans les langages fortement typés comme Java et C #, void
(ou Void
) comme type de retour pour une méthode semble signifier:
Cette méthode ne renvoie rien. Rien. Non-retour. Vous ne recevrez rien de cette méthode.
Ce qui est vraiment étrange, c'est qu'en C, void
comme type de retour ou même comme type de paramètre de méthode, cela signifie:
Ça pourrait vraiment être n'importe quoi. Il faudrait lire le code source pour le savoir. Bonne chance. Si c'est un pointeur, vous devriez vraiment savoir ce que vous faites.
Considérez les exemples suivants en C:
void describe(void *thing)
{
Object *obj = thing;
printf("%s.\n", obj->description);
}
void *move(void *location, Direction direction)
{
void *next = NULL;
// logic!
return next;
}
De toute évidence, la deuxième méthode renvoie un pointeur, qui par définition pourrait être n'importe quoi.
Puisque C est plus ancien que Java et C #, pourquoi ces langages ont-ils adopté void
comme signifiant "rien" alors que C l'a utilisé comme "rien ou rien (quand un pointeur)"?
Object
dans un cas pour lever l'ambiguïté.
dynamic
type qui est rarement utilisé?
void
pendant que l'exemple de code utilisevoid*
ce qui est quelque chose de complètement différent.