Em linguagens fortemente tipadas como Java e C #, void
(ou Void
) como um tipo de retorno para um método parece significar:
Este método não retorna nada. Nada. Sem retorno. Você não receberá nada deste método.
O que é realmente estranho é que em C, void
como um tipo de retorno ou mesmo como um tipo de parâmetro de método, significa:
Realmente poderia ser qualquer coisa. Você precisaria ler o código fonte para descobrir. Boa sorte. Se é um ponteiro, você realmente deve saber o que está fazendo.
Considere os seguintes exemplos em 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, o segundo método retorna um ponteiro, que por definição pode ser qualquer coisa.
Como C é mais antigo que Java e C #, por que essas linguagens adotaram void
como significando "nada" enquanto C usava como "nada ou nada (quando um ponteiro)"?
Object
em um caso para desambiguar.
dynamic
tipo que raramente é usado?
void
enquanto o exemplo de código usavoid*
algo completamente diferente.