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, voidcome 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 voidil significato di "niente" mentre C lo ha usato come "niente o niente (quando un puntatore)"?
Objectin un caso per chiarire le ambiguità.
dynamictipo che viene usato raramente?
voidmentre l'esempio di codice usavoid*qualcosa di completamente diverso.