Nei linguaggi strongmente tipizzati come Java e C #, void
(o Void
) come un tipo di ritorno per un metodo sembra significare:
This method doesn't return anything. Nothing. No return. You will not receive anything from this method.
Ciò che è veramente strano è che in C, void
come tipo di ritorno o anche come tipo di parametro metodo significa:
It could really be anything. You'd have to read the source code to find out. Good luck. If it's a pointer, you should really know what you're doing.
Considera i seguenti esempi in 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;
}
Ovviamente, il secondo metodo restituisce un puntatore, che per definizione potrebbe essere qualsiasi cosa.
Poiché C è più vecchio di Java e C #, perché questi linguaggi adottano void
come "nulla" mentre C lo usa come "niente o niente (quando un puntatore)"?