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, voidcomme 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é voidcomme signifiant "rien" alors que C l'a utilisé comme "rien ou rien (quand un pointeur)"?
Objectdans un cas pour lever l'ambiguïté.
dynamictype qui est rarement utilisé?
voidpendant que l'exemple de code utilisevoid*ce qui est quelque chose de complètement différent.