सी # 4 में, क्या वैकल्पिक आउटपुट पैरामीटर रखने का कोई अच्छा तरीका है?वैकल्पिक आउटपुट पैरामीटर्स
उत्तर
सं
यह "वैकल्पिक", इस अर्थ में कि आप विधि में एक मूल्य निर्दिष्ट करने की जरूरत नहीं है, आप ref
उपयोग कर सकते हैं बनाने के लिए।
एक 'रेफरी पैरामीटर एक बहुत अलग उपयोग केस है। एक वैकल्पिक पैरामीटर किसी विशिष्ट मान में गुजरता है यदि कॉलर एक निर्दिष्ट पैरामीटर के साथ निर्दिष्ट नहीं करता है, तो कॉलर हमेशा एक मान निर्दिष्ट करता है, चाहे उन्हें लगता है कि उन्होंने इसे निर्दिष्ट किया है या नहीं। 'Ref' हमेशा वैध स्मृति स्थान को इंगित करता है, और एक वैध स्मृति स्थान में हमेशा _something_ होता है। सबसे अच्छा, यह डिफ़ॉल्ट विनिर्देश के लाभ के बिना सिर्फ एक जादू मूल्य है "डिफ़ॉल्ट मान एक्स है।" – danwyand
हाँ, यह उत्तर एक डिज़ाइन निर्णय नहीं है, इसलिए मैंने "इस अर्थ में" क्वालीफायर जोड़ा। – codekaizen
वास्तव में नहीं, हालांकि आप हमेशा किसी अन्य विधि के साथ विधि को अधिभारित कर सकते हैं जो आउटपुट पैरामीटर नहीं लेता है।
private object[] Func();
असाइन वैकल्पिक आउटपुट वापसी वस्तु सरणी में आप चाहते हैं के रूप में कई और फिर उन्हें का उपयोग करें! लेकिन अगर आप
private void Func(out int optional1, out string optional2)
की तरह वैकल्पिक उत्पादन कुछ मतलब है और फिर आप की तरह
Func(out i);
कुछ फोन तो जवाब नहीं आप नहीं कर सकते है। भी सी # और .NET ढांचे में कई डेटा संरचनाएं हैं जो List
और Array
जैसी बहुत लचीली हैं और आप उन्हें आउटपुट पैरामीटर या रिटर्न प्रकार के रूप में उपयोग कर सकते हैं, इसलिए वैकल्पिक आउटपुट पैरामीटर रखने के लिए कोई तरीका लागू करने की आवश्यकता नहीं है।
वैकल्पिक एट्रिब्यूट के साथ पैरामीटर सजाने काम नहीं करते हैं, या तो।
private void Func(
[Optional] out int optional1,
[Optional] out string optional2)
{ /* ... */ }
ध्यान दें कि ऊपर (शायद दुर्भाग्य से) संकलन होगा: पिछले नमूना का विस्तार करने के लिए, आप की तरह कुछ मिल चाहते हैं। हालांकि, संकलन करने का प्रयास:
Func(out i);
असफल हो जायेगी जब तक एक एक पैरामीटर हस्ताक्षर के साथ एक अधिभार स्पष्ट रूप से प्रदान की जाती है।
(सैद्धांतिक रूप से) उपरोक्त कार्य को एक महत्वपूर्ण समस्या है। जब एक छोड़े गए वैकल्पिक पैरामीटर वाले विधि को कॉल किया जाता है, तो सभी पैरामीटर के मान वाले स्टैक फ्रेम को बनाया जाता है, और अनुपलब्ध मान निर्दिष्ट डिफ़ॉल्ट मानों से भरे होते हैं।
हालांकि, एक "आउट" पैरामीटर एक संदर्भ है, मूल्य नहीं। यदि वह पैरामीटर वैकल्पिक है और आपूर्ति नहीं किया गया है, तो इसका क्या संदर्भ होगा? कंपाइलर को अभी भी आवश्यकता को लागू करने की आवश्यकता है कि विधि से किसी भी सामान्य रिटर्न से पहले "आउट" पैरामीटर भर दिया जाए, क्योंकि कंपाइलर को प्राथमिकता नहीं पता है (यदि कोई है) वैकल्पिक पैरामीटर कॉलर द्वारा निर्दिष्ट किए जाते हैं। इसका मतलब है कि डमी चर का संदर्भ कहीं पारित करना होगा ताकि विधि को भरने के लिए कुछ हो। इस डमी परिवर्तनीय स्थान का प्रबंधन कंपाइलर के लेखक के लिए एक बुरा सिरदर्द पैदा करेगा। मैं यह नहीं कह रहा हूं कि यह कैसे काम करेगा, इस बारे में ब्योरा देना असंभव होगा, लेकिन आर्किटेक्चरल प्रभाव इतने महान हैं कि माइक्रोसॉफ्ट इस सुविधा पर समझ में आया है।
public class Dummy<T>
{
public T Value;
}
फिर functionDoSomething(out new Dummy<int>().Value
, जहां int
किसी भी प्रकार हो सकता है का उपयोग करें।
- 1. MySQL संग्रहित प्रक्रियाओं में वैकल्पिक पैरामीटर्स
- 2. सी # 4.0 वैकल्पिक पैरामीटर्स - प्रकार "वैकल्पिक" प्रकार के वैकल्पिक पैरामीटर निर्दिष्ट करने के लिए कैसे?
- 3. वैकल्पिक पैरामीटर्स के साथ एक इंटरफ़ेस को स्पष्ट रूप से कार्यान्वित करने से चेतावनी
- 4. Jquery Validator गतिशील पैरामीटर्स
- 5. एक्सेल 2010 और पैरामीटर्स
- 6. कन्स्ट्रक्टर पैरामीटर्स और विरासत
- 7. ढूँढना डीएल फंक्शन पैरामीटर्स
- 8. पुनरावृत्ति वैराडिक पैरामीटर्स
- 9. प्रारंभिक अनुवांशिक प्रोग्रामिंग पैरामीटर्स
- 10. डब्ल्यूसीएफ और इंटरफेस पैरामीटर्स
- 11. जीडब्ल्यूटी यूआरएल पैरामीटर्स
- 12. पैरामीटर्स ऑब्जेक्टिव-सी
- 13. फेसबुक प्रमाणीकरण के संवाद पैरामीटर्स में प्रदर्शन = वैप संवाद हटाने के लिए वैकल्पिक समाधान क्या है?
- 14. रेल में मजबूत पैरामीटर्स 3.2.8
- 15. जेनेरिक पैरामीटर्स और सार कक्षा
- 16. जावा में नेस्टेड टाइप पैरामीटर्स
- 17. WPF - डेटा टेम्पलेट्स पर पैरामीटर्स?
- 18. एसक्यूएल पैरामीटर्स और प्रश्न चिह्न
- 19. बाकी आश्वासन - पैरामीटर्स और बॉडी
- 20. SQLite पैरामीटर्स - tablename को पैरामीटर
- 21. बढ़ावा देने के साथ और बिना तर्क के पैरामीटर्स :: program_options
- 22. parseInt वैकल्पिक
- 23. वैकल्पिक
- 24. वैकल्पिक
- 25. वैकल्पिक
- 26. वैकल्पिक
- 27. वैकल्पिक
- 28. स्प्रिंग डेटा जेपीए अमान्य पेज.sort पैरामीटर्स
- 29. PHP का यूएसओटी कॉलबैक फ़ंक्शन पैरामीटर्स
- 30. जावा में पैरामीटर्स के साथ तरीके
ऐसी सुविधा के लिए कोई मूल्य नहीं दिखता है। यदि आपने पीडीसी पर सी # कंपाइलर लोगों के सत्रों को कभी भी सुना है, तो आप देखेंगे कि प्रत्येक बदलाव का अर्थ है। –
मैं इस बात से असहमत हूं कि इस सुविधा में कोई मूल्य नहीं है। यदि किसी विधि में कुछ तर्क हैं, तो आउट-पैरामीटर के माध्यम से डेटा लौटाते हुए - मैं इस तर्क को कॉल करने में सक्षम होना चाहता हूं, बस आउटपुट की आवश्यकता नहीं है ... – Alex
मैं यह देखने के लिए Int32.TryParse() का उपयोग करता हूं कि दिए गए स्ट्रिंग को किसी संख्या में पार्स किया जा सकता है और यदि ऐसा हो, तो कभी-कभी मुझे इसकी परवाह है। तो जिटबीट सही है। –