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, void
como 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 void
como "nada" mientras que C lo usó como "nada o nada (cuando un puntero)"?
Object
en un caso para desambiguar.
dynamic
tipo que rara vez se usa?
void
mientras que el ejemplo de código usavoid*
algo completamente diferente.