2010-11-15 13 views
6

किसी को भी पेशेवरों और बाहर पैरामीटर के विपक्ष का कहना है सकते हैं की विपक्ष क्या है। जब किसी मान को वापस करने के बजाय पैरामीटर का उपयोग करना पसंद किया जाता है।पेशेवरों और पैरामीटर बाहर का उपयोग कर

उत्तर

4

मैं पूर्णांक जैसे प्रकार में बनाया पर TryParse तरीकों पर एक नज़र लेने के सुझाव है। रिटर्न वैल्यू सफलता का संकेत देने के लिए एक बूल है जबकि मूल्य को आउट पैरामीटर के माध्यम से वापस किया जाता है। यह निर्माण लूपिंग निर्माण में इस विधि को कॉल करने में उपयोगी बनाता है जहां एक और वापसी प्रकार इसे थोड़ा और जटिल बना देगा।

आगे प्रतिबिंब एक चोर पर एक प्रवृत्ति सिर्फ बजाय एक विधि के लिए पैरामीटर जोड़ने ठीक से तर्क encapsulating रखने के लिए हो सकता है।

+0

जानना चाहते हैं कि बूलियन रिटर्न लूप में क्यों अच्छा है? क्या आप उदाहरण दे सकते हैं? – user496949

+0

@ user496949 - TryParse विधियों के साथ, आप विधि की वापसी को देखकर काफी आसानी से पार्स करने में विफलता को संभाल सकते हैं। यह आपको पार्सिंग अपवाद को संभालने या कुछ ऐसा ढूंढने की कोशिश करने से बचाता है जो परिणामस्वरूप मान इंगित करता है किसी भी तरह से अमान्य है। एक सबसे अच्छा उदाहरण के रूप में एक बुलियन पर विचार करें। अपवाद के अलावा, कोई कैसे पता चलेगा कि परिणामस्वरूप मूल्य "अमान्य" था? TryParse के साथ, विधि स्वयं सफलता को इंगित करती है, और परिणामी मान या तो सही तरीके से एक नए मान पर पार्स किया गया था या जैसा कि विधि कहा जाता था। – Steven

+0

मुझे लगता है कि आप बड़ी कमी पर हिट करते हैं। जो मैं बता सकता हूं, हर बाहर परम। विधि को आमंत्रित करने वाले ऑब्जेक्ट द्वारा किसी अन्य चर के रख-रखाव की आवश्यकता होती है। यह रास्ते में कुछ अतिरिक्त चरों को डिलीवर करने के लिए "बड़ा सौदा" नहीं है, लेकिन इसमें असफल रूप से बोझिल होने का एक बड़ा प्रभावशाली होता है, जब, विधि केवल उस जानकारी को आसानी से (और शायद अधिक उचित रूप से) समेकित कर सकती है इसका लौटा मूल्य – Steven

0

आप ने कहा के रूप में, बाहर पैरामीटर के बिना, आप केवल एक मूल्य लौट सकते हैं, कीवर्ड बाहर आप की अनुमति एक से अधिक मूल्य

0

"लौटने" सी # में आप कई चर वापस नहीं लौट सकते, तो आप काम कर सकते हैं आउट पैरामीटर का उपयोग करके, यदि आप कक्षा के माध्यम से नहीं जाना चाहते हैं (उन एकाधिक चर के साथ एक वर्ग वापस करें)।

6

आउट मानकों को प्रभावी ढंग से आप एक विधि से एक से अधिक मान वापस जाने के लिए अनुमति देते हैं, और यह आम तौर पर एक मनमाना struct या टपल जो एक से अधिक मान शामिल लौटने के लिए बेहतर है।

यह तर्क हो सकता है कि यह एक समारोह है जो एक बाहर पैरामीटर का उपयोग करता के संभावित दुष्प्रभाव की अनदेखी के रूप में यह पारंपरिक 'से अधिक पैरामीटर, एक वापसी मान' मॉडल से रवाना आसान है। लेकिन मैं ईमानदारी से सोचता हूं कि एक विधि पोस्ट-हालत के साथ जोड़ा गया कीवर्ड प्रोग्रामर का इरादा स्पष्ट करता है।

+1

मुझे यकीन है कि मैं धारणा के साथ सहमत हैं कि यह वापसी वस्तुओं के बजाय "बाहर" मान होना आम तौर पर पसंद किया जाता है नहीं कर रहा हूँ, लेकिन शायद यह है क्योंकि मैं काफी मनमाने ढंग से नहीं कर रहा हूँ interpretting आपकी इच्छानुसार है। मेरे लिए, रिटर्न वैल्यू का संग्रह (एक एकल रिटर्न ऑब्जेक्ट में प्रोपर्टीज डब्ल्यू /), आम तौर पर घोषित और बनाए रखने वाले चर की सूची से अधिक लचीलापन प्रदान करता है, लेकिन मैं सहमत हूं कि दोनों स्थितियों के लिए अच्छे मामले हैं। वे TryParse प्रकार विधियों में सही मायने में लगते हैं, जहां मैं सहमत हूं, + बूल (सफलता?) की "विशेष" संरचना ओवरकिल लगती है। – Steven

संबंधित मुद्दे