In linguaggi fortemente tipizzati come Java e C #, void
(o Void
) come tipo restituito per un metodo sembra significare:
Questo metodo non restituisce nulla. Niente. Senza ritorno. Non riceverai nulla da questo metodo.
La cosa davvero strana è che in C, void
come tipo di ritorno o anche come tipo di parametro del metodo significa:
Potrebbe davvero essere qualsiasi cosa. Dovresti leggere il codice sorgente per scoprirlo. In bocca al lupo. Se è un puntatore, dovresti davvero sapere cosa stai facendo.
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.
Dato che C è più vecchio di Java e C #, perché questi linguaggi hanno adottato void
il significato di "niente" mentre C lo ha usato come "niente o niente (quando un puntatore)"?
Object
in un caso per chiarire le ambiguità.
dynamic
tipo che viene usato raramente?
void
mentre l'esempio di codice usavoid*
qualcosa di completamente diverso.