2012-03-07 31 views
5

lý do/logic/trở ngại đằng sau thực tế là một phần phương pháp chỉ có thể có loại trả về void là gì?Tại sao một phần phương pháp chỉ có thể có loại trả về void?

cảm ơn

+1

bản sao có thể có của [Tại sao không thể trả về một phần phương thức nào?] (Http://stackoverflow.com/questions/6954572/why-cant-partial-methods-return-anything) – BoltClock

+0

Bạn mong đợi một phương pháp từng phần như thế nào với loại trả về không có hiệu lực để hoạt động? Họ có nên trả về 'mặc định (T)' hay cái gì? – CodesInChaos

Trả lời

9

Các phương pháp từng phần được thiết kế để bị bỏ sót nếu bạn không cung cấp triển khai cho chúng. Trình biên dịch thực sự loại bỏ các cuộc gọi đến các phương thức từng phần không được thực hiện.

Điều này cũng nêu bật lý do tại sao họ không thể trả lại bất cứ điều gì: Nếu bạn dựa vào giá trị trả về mà không triển khai phương thức một phần thì sao? Bạn sẽ có một cái gì đó chưa được khởi tạo, mặc dù mã hiển thị rõ ràng một bài tập.

+0

Cuối cùng được hiểu với bài đăng của bạn. Đã gặp khó khăn khi tìm câu trả lời ở nơi khác. Cảm ơn! – ckv

0

Phương pháp một phần chưa thực hiện được xóa lúc biên dịch. Một trình biên dịch có thể bỏ qua một cuộc gọi để void phương pháp bởi vì họ chỉ sửa đổi trạng thái của một đối tượng đã tồn tại. Nó không thể loại bỏ các phương thức trả về các đối tượng vì nó sẽ làm mất hiệu lực mã.

2

Triển khai các phương pháp từng phần được dự định là tùy chọn.

Nếu việc triển khai không được cung cấp, cuộc gọi vẫn hợp lệ, nhưng sẽ được trình biên dịch âm thầm xóa. Một đại biểu chỉ có thể được chỉ định một phần phương pháp được thực hiện.

Điều này có nghĩa là chúng không có tác dụng phụ - hiệu quả không có giá trị trả lại hoặc tham số "ngoài", chúng không thể ảo và luôn riêng tư.

Thêm here.

Các vấn đề liên quan