Phương pháp không phải lúc nào cũng được yêu cầu trả về giá trị; đặc biệt, nó cũng được phép thoát bằng cách ném một ngoại lệ (trong trường hợp đó không có giá trị nào được trả về).
Edit: Cụ thể, the rules for the body of a method trả int
là:
- Tất cả
return
báo cáo trong phương pháp này phải trả lại một biểu thức chuyển đổi thành int
- Sự kết thúc của khối phương pháp không phải là có thể truy cập
Trong ví dụ của bạn, trình biên dịch có thể chứng minh rằng M2
luôn thoát bằng cách ném , do đó, không thể truy cập vào cuối khối phương thức (tuân theo quy tắc số 2). Ngoài ra còn có không có tuyên bố return
, cũng đáp ứng quy tắc số 1. Do đó đây là định nghĩa phương thức hợp lệ.
Mặt khác, M1
không đáp ứng quy tắc số 2 để nó không hợp pháp.
Bạn có thể bị nhầm lẫn bởi thông báo lỗi không đề cập đến, nhưng hãy xem xét rằng trong hầu hết các trường hợp phương pháp có giá trị trả về return
thay vì ném - trình biên dịch chỉ cho bạn biết bạn có thể quên làm.
Tôi dường như không thể tìm thấy ở đâu trong đặc điểm kỹ thuật C# quá trình này được mô tả, bất cứ ai có thể chỉ ra rằng? – SWeko
@SWeko: Đã theo dõi nó xuống. Ở đây: http://msdn.microsoft.com/en-us/library/aa664437(VS.71).aspx (đoạn cuối). – Jon