Vấn đề cơ bản với "void" là nó không có nghĩa giống như bất kỳ loại trả lại nào khác. "void" có nghĩa là "nếu phương thức này trả về thì nó không trả về giá trị nào cả." Có giá trị; null là một giá trị Nó trả về không có giá trị gì.
Điều này thực sự gây rối hệ thống loại. Một hệ thống loại về cơ bản là một hệ thống để thực hiện các suy luận logic về những hoạt động nào là hợp lệ trên các giá trị cụ thể; một phương thức trả về void không trả về một giá trị, vì vậy câu hỏi "hoạt động nào là hợp lệ đối với điều này?" không có ý nghĩa gì cả Không có "điều" nào để có một hoạt động trên, hợp lệ hoặc không hợp lệ.
Hơn nữa, điều này làm rối loạn thời gian chạy một cái gì đó dữ dội. Thời gian chạy .NET là một triển khai của Hệ thống thực thi ảo, được chỉ định là một máy xếp chồng. Đó là, một máy ảo trong đó tất cả các hoạt động được đặc trưng về hiệu ứng của chúng trên một ngăn xếp đánh giá. (Tất nhiên trong thực tế máy sẽ được thực hiện trên một máy với cả chồng và đăng ký, nhưng hệ thống thực hiện ảo giả chỉ một chồng.) Hiệu quả của một cuộc gọi đến một phương pháp khoảng trống là cơ bảnkhác với hiệu quả của một cuộc gọi đến một phương thức không trống; một phương thức không trống luôn đặt một cái gì đó lên ngăn xếp, có thể cần phải bật ra. Một phương thức void không bao giờ đặt một cái gì đó lên ngăn xếp. Và do đó, trình biên dịch không thể xử lý các phương thức void và non-void giống nhau trong trường hợp giá trị trả về của phương thức bị bỏ qua; nếu phương thức là void thì không có giá trị trả về nên không có pop.
Vì tất cả những lý do này, "void" không phải là một loại có thể được khởi tạo; nó không có giá trị , đó là toàn bộ quan điểm của nó. Nó không thể chuyển đổi thành đối tượng và một phương thức trả về khoảng trống không bao giờ có thể được xử lý đa hình bằng phương thức trả về không có giá trị vì làm như vậy làm hỏng ngăn xếp!
Do đó, void không thể được sử dụng như một đối số kiểu, đó là một sự xấu hổ, như bạn lưu ý. Nó sẽ rất thuận tiện.
Với lợi ích của nhận thức muộn, sẽ tốt hơn cho tất cả những người quan tâm nếu thay vì không có gì, một phương thức trả về khoảng trống tự động trả về "Đơn vị", một loại tham chiếu đơn lẻ ma thuật. Sau đó , bạn sẽ biết rằng mọi cuộc gọi phương thức đều đặt một thứ gì đó lên ngăn xếp , bạn sẽ biết rằng mọi cuộc gọi phương thức đều trả về một thứ có thể được gán cho một biến của loại đối tượng và dĩ nhiên Đơn vị có thể được sử dụng làm đối số kiểu , do đó sẽ có không cần phải có các loại đại biểu Hành động và Func riêng biệt. Đáng buồn thay, đó không phải là thế giới chúng ta đang ở.
Đối với một số suy nghĩ trong tĩnh mạch này xem: