Trong các ngôn ngữ được gõ mạnh như Java và C #, void
(hoặc Void
) làm kiểu trả về cho một phương thức dường như có nghĩa là:
Phương pháp này không trả lại bất cứ điều gì. Không có gì. Không trở lại. Bạn sẽ không nhận được bất cứ điều gì từ phương pháp này.
Điều thực sự kỳ lạ là trong C, void
như một kiểu trả về hoặc thậm chí là một kiểu tham số phương thức có nghĩa là:
Nó thực sự có thể là bất cứ điều gì. Bạn sẽ phải đọc mã nguồn để tìm hiểu. Chúc may mắn. Nếu đó là một con trỏ, bạn thực sự nên biết những gì bạn đang làm.
Hãy xem xét các ví dụ sau trong 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;
}
Rõ ràng, phương thức thứ hai trả về một con trỏ, theo định nghĩa có thể là bất cứ điều gì.
Vì C cũ hơn Java và C #, tại sao các ngôn ngữ này lại void
có nghĩa là "không có gì" trong khi C sử dụng nó là "không có gì hoặc bất cứ điều gì (khi một con trỏ)"?
Object
trong một trường hợp để định hướng.
dynamic
loại hiếm khi được sử dụng?
void
trong khi ví dụ mã sử dụngvoid*
đó là một cái gì đó hoàn toàn khác nhau.