2013-03-06 13 views
5

मेरे लिए यह समझना मुश्किल है कि वास्तव में एक वापसी कथन क्या कर रहा है। उदाहरण के लिए, इस पद्धति में ...सी # में रिटर्न स्टेटमेंट वास्तव में क्या करता है?

public int GivePoints(int amount) 
    { 
     Points -= amount; 
     return amount; 
    } 

यहां तक ​​कि अगर मैं वापसी के बाद किसी भी यादृच्छिक पूर्णांक जगह, GivePoints पद्धति अभी भी ठीक उसी बात करता है। तो यह क्या है कि रिटर्न स्टेटमेंट कर रहा है?

+2

मैं इस प्रश्न का उत्तर देने के अलावा यह सुनिश्चित करें कि यह * कॉलर विधि के लिए * मूल्य * देता है। –

उत्तर

0

आप उदाहरण में, समारोह सही संख्या आप इसे पर भेजी जा रही लौटा रहा है। इस मामले में, आप जो भी मान amount के रूप में पास करते हैं। इसलिए, आपके वर्तमान कोड में वापसी थोड़ा व्यर्थ है।

तो अपने उदाहरण में

:

int x = GivePoints(1000); 

एक्स के बराबर 1000

+0

आपको समझाया जाना चाहिए कि वापसी के बाद कुछ भी निष्पादित नहीं होगा, जो कि प्रश्नकर्ता के सच्चे conundrum प्रतीत होता है। – Ron

3

वापसी जब यह बुला समारोह बाहर निकल जाएगा। जो भी रिटर्न स्टेटमेंट से नीचे है वह इस प्रकार निष्पादित नहीं किया जाएगा।

असल में, return इंगित करता है कि जो भी ऑपरेशन फ़ंक्शन को पूर्ववत करना था, उसे पूर्ववत किया गया है, और कॉलर को इस ऑपरेशन के परिणाम (यदि लागू हो) का परिणाम पास कर देता है।

4

return फोन करने वाले के लिए वर्तमान पद्धति से नियंत्रण वापस आ जाएगी, और भी वापस पारित जो भी तर्क इसके साथ भेजा जाता है। आपके उदाहरण में, GivePoints को एक पूर्णांक लौटने के लिए परिभाषित किया गया है, और एक पूर्णांक को एक तर्क के रूप में स्वीकार करने के लिए परिभाषित किया गया है। आपके उदाहरण में, लौटाया गया मान वास्तव में तर्क मान के समान होता है।

एक दिए गए मान अपने कोड है कि परिभाषित विधि, GivePoints इस उदाहरण में कॉल में कहीं और से प्रयोग किया जाता है।

int currentPoints = GivePoints(1); 

मतलब यह होगा कि currentPoints की 1.

क्या यह करने के लिए टूट जाती है कि GivePoints मूल्यांकन किया जाता है है मूल्य सौंप दिया जाता है। GivePoints का मूल्यांकन विधि पर लौटने पर आधारित है। GivePoints इनपुट देता है, इस प्रकार, GivePoints उपरोक्त उदाहरण में 1 का मूल्यांकन करेगा।

+2

+1 उल्लेख करने के लिए एक और अच्छी बात 'स्टैक' अवधारणा हो सकती है: उन विधियों को ढेर पर बुलाया जाता है, और 'वापसी' कथन वर्तमान विधि से बाहर निकलता है, नियंत्रण प्रवाह (और आमतौर पर एक मान) को पिछली विधि पर वापस लौटाता है ढेर। – danludwig

+0

इसके अलावा, रिटर्न स्टेटमेंट चलाने के बाद दिखाई देने वाला कोई भी कोड मूल्यांकन नहीं किया जाएगा। यही कारण है कि आपका "यादृच्छिक पूर्णांक" मान अनदेखा किया जाता है। – Heather

0

अपने मूल लक्ष्य

public int GivePoints(int amount) 
{ 
    Points -= amount; 
    return Points; 
} 

तो लौट अंक

का अद्यतन मान प्रदान करेंगे अगर यह आपके मामला नहीं है के लिए सिर्फ एक अनुमान कोड होना चाहिए

public void GivePoints(int amount) 
{ 
    Points -= amount; 
} 
संबंधित मुद्दे