En lenguajes fuertemente tipados como Java y C #, void(o Void) como tipo de retorno para un método parecen significar:
Este método no devuelve nada. Nada. Sin retorno. No recibirá nada de este método.
Lo realmente extraño es que en C, voidcomo un tipo de retorno o incluso como un tipo de parámetro de método significa:
Realmente podría ser cualquier cosa. Tendrías que leer el código fuente para averiguarlo. Buena suerte. Si es un puntero, realmente deberías saber lo que estás haciendo.
Considere los siguientes ejemplos 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;
}
Obviamente, el segundo método devuelve un puntero, que por definición podría ser cualquier cosa.
Dado que C es más antiguo que Java y C #, ¿por qué estos lenguajes adoptaron voidcomo "nada" mientras que C lo usó como "nada o nada (cuando un puntero)"?
Objecten un caso para desambiguar.
dynamictipo que rara vez se usa?
voidmientras que el ejemplo de código usavoid*algo completamente diferente.