एक विधि हमेशा एक मूल्य के वापस जाने के लिए आवश्यक नहीं है; विशेष रूप से, इसे अपवाद फेंकने से बाहर निकलने की भी अनुमति है (जिस स्थिति में कोई मूल्य वापस नहीं किया जाता है)।
संपादित करें: विशेष रूप से, the rules for the body of a method कि int
देता हैं:
- विधि के सभी
return
बयान int
- को एक अभिव्यक्ति परिवर्तनीय लौटना चाहिए विधि ब्लॉक के अंत पहुंच योग्य नहीं होना चाहिए
आपके उदाहरण में, संकलक साबित कर सकता है कि M2
हमेशा फेंकने से बाहर निकलता है , इसलिए विधि ब्लॉक का अंत पहुंच योग्य नहीं है (नियम # 2 को संतुष्ट करता है)। return
कथन भी नहीं हैं, जो नियम # 1 को भी संतुष्ट करते हैं। इसलिए यह एक वैध विधि परिभाषा है।
दूसरी ओर, M1
नियम # 2 को पूरा नहीं करता है, इसलिए यह कानूनी नहीं है।
आप शायद त्रुटि संदेश जिस पर सभी फेंकने का उल्लेख नहीं है, लेकिन विचार है कि में लगभग वापसी मूल्यों के साथ सभी मामलों तरीकों return
कर के बजाय फेंक द्वारा गुमराह कर रहे हैं - संकलक सिर्फ बताता है आप चाहते हैं तो आप शायद करने के लिए भूल गया था।
मुझे लगता है कि सी # विनिर्देश में इस प्रक्रिया का वर्णन नहीं किया गया है, क्या कोई इसे इंगित कर सकता है? – SWeko
@SWeko: इसे ट्रैक किया गया। यहां: http://msdn.microsoft.com/en-us/library/aa664437(VS.71).aspx (अंतिम पैराग्राफ)। – Jon