W silnie typowanych językach, takich jak Java i C #, void
(lub Void
) jako typ zwracany dla metody wydaje się oznaczać:
Ta metoda niczego nie zwraca. Nic. Bez powrotu. Nic nie otrzymasz z tej metody.
Naprawdę dziwne jest to, że w C, void
jako typ zwracany lub nawet jako typ parametru metody oznacza:
To może być naprawdę wszystko. Musisz przeczytać kod źródłowy, aby się dowiedzieć. Powodzenia. Jeśli jest to wskaźnik, naprawdę powinieneś wiedzieć, co robisz.
Rozważ następujące przykłady w 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;
}
Oczywiście druga metoda zwraca wskaźnik, który z definicji może być dowolny.
Skoro C jest starsze niż Java i C #, dlaczego te języki przyjęły void
jako „nic”, podczas gdy C użył go jako „nic lub cokolwiek (gdy wskaźnik)”?
Object
w jednym przypadku, aby ujednoznacznić.
dynamic
typ, który jest rzadko używany?
void
tym,void*
czego używa przykład kodu, co jest czymś zupełnie innym.