C# Language
नामित और वैकल्पिक तर्क
खोज…
टिप्पणियों
नामित तर्क
Ref: MSDN नामांकित तर्क आपको पैरामीटर सूची में पैरामीटर्स की स्थिति के बजाय तर्क को पैरामीयर के नाम के साथ जोड़कर एक विशेष पैरामीटर के लिए एक तर्क निर्दिष्ट करने में सक्षम करते हैं।
जैसा कि MSDN ने कहा है, एक नामित तर्क,
- आपको पैरामीयर के नाम को जोड़कर फ़ंक्शन के तर्क को पास करने में सक्षम करता है।
- मापदंडों की स्थिति को याद रखने के लिए कोई ज़रूरत नहीं है कि हम हमेशा से अवगत नहीं हैं।
- बुलाया फ़ंक्शन के मापदंडों की सूची में मापदंडों के क्रम को देखने की आवश्यकता नहीं है।
- हम इसके नाम से प्रत्येक तर्क के लिए पैरामीटर निर्दिष्ट कर सकते हैं।
वैकल्पिक तर्क
Ref: MSDN एक विधि, निर्माणकर्ता, अनुक्रमणिका या प्रतिनिधि की परिभाषा निर्दिष्ट कर सकती है कि इसके मापदंडों की आवश्यकता है या वे वैकल्पिक हैं। किसी भी कॉल को सभी आवश्यक मापदंडों के लिए तर्क प्रदान करना चाहिए, लेकिन वैकल्पिक मापदंडों के लिए तर्क छोड़ सकते हैं।
जैसा कि MSDN, एक वैकल्पिक तर्क द्वारा कहा गया है,
- हम कॉल में तर्क को छोड़ सकते हैं यदि वह तर्क एक वैकल्पिक तर्क है
- प्रत्येक वैकल्पिक तर्क का अपना डिफ़ॉल्ट मान होता है
- यदि हम मूल्य की आपूर्ति नहीं करते हैं तो यह डिफ़ॉल्ट मान लेगा
- वैकल्पिक तर्क का एक डिफ़ॉल्ट मान होना चाहिए a
- लगातार अभिव्यक्ति।
- एक मान प्रकार होना चाहिए जैसे कि एनम या संरचना।
- प्रपत्र डिफ़ॉल्ट का मान होना चाहिए (ValueType)
- इसे पैरामीटर सूची के अंत में सेट किया जाना चाहिए
नामित तर्क
निम्नलिखित पर विचार करें हमारी फ़ंक्शन कॉल है।
FindArea(120, 56);
इसमें हमारा पहला तर्क लंबाई (यानी 120) और दूसरा तर्क चौड़ाई (यानी 56) है। और हम उस फ़ंक्शन द्वारा क्षेत्र की गणना कर रहे हैं। और निम्नलिखित फ़ंक्शन परिभाषा है।
private static double FindArea(int length, int width)
{
try
{
return (length* width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
इसलिए पहले फ़ंक्शन कॉल में, हमने केवल इसके स्थान द्वारा तर्क पारित किए। सही?
double area;
Console.WriteLine("Area with positioned argument is: ");
area = FindArea(120, 56);
Console.WriteLine(area);
Console.Read();
यदि आप इसे चलाते हैं, तो आपको निम्नानुसार आउटपुट मिलेगा।
अब यहाँ यह नामांकित तर्कों की विशेषताएं हैं। कृपया पूर्ववर्ती फ़ंक्शन कॉल देखें।
Console.WriteLine("Area with Named argument is: ");
area = FindArea(length: 120, width: 56);
Console.WriteLine(area);
Console.Read();
यहां हम मेथड कॉल में नामित तर्क दे रहे हैं।
area = FindArea(length: 120, width: 56);
अब यदि आप इस कार्यक्रम को चलाते हैं, तो आपको वही परिणाम मिलेगा। यदि हम नामित तर्कों का उपयोग कर रहे हैं, तो हम विधि कॉल में नाम दे सकते हैं।
Console.WriteLine("Area with Named argument vice versa is: ");
area = FindArea(width: 120, length: 56);
Console.WriteLine(area);
Console.Read();
नामित तर्क का एक महत्वपूर्ण उपयोग है, जब आप अपने प्रोग्राम में इसका उपयोग करते हैं तो यह आपके कोड की पठनीयता में सुधार करता है। यह बस कहता है कि आपके तर्क का क्या मतलब है, या यह क्या है?
आप स्थितिगत तर्क भी दे सकते हैं। इसका मतलब है, स्थितिगत तर्क और नामित तर्क दोनों का संयोजन।
Console.WriteLine("Area with Named argument Positional Argument : ");
area = FindArea(120, width: 56);
Console.WriteLine(area);
Console.Read();
उपरोक्त उदाहरण में हमने लंबाई के रूप में 120 और पैरामीटर चौड़ाई के लिए एक नामित तर्क के रूप में 56 पारित किए।
कुछ सीमाएँ भी हैं। हम एक नामित तर्कों की सीमा पर अब चर्चा करेंगे।
एक नामित तर्क का उपयोग करने की सीमा
सभी निश्चित तर्कों को निर्दिष्ट किए जाने के बाद नामित तर्क विनिर्देश प्रकट होना चाहिए।
यदि आप एक निश्चित तर्क से पहले एक नामित तर्क का उपयोग करते हैं तो आपको निम्न संकलन समय त्रुटि मिलेगी।
सभी निश्चित तर्कों को निर्दिष्ट किए जाने के बाद नामित तर्क विनिर्देश प्रकट होना चाहिए
वैकल्पिक तर्क
वैकल्पिक तर्कों के साथ हमारे कार्य की पूर्ववर्ती परिभाषा पर विचार करें।
private static double FindAreaWithOptional(int length, int width=56)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
यहां हमने चौड़ाई के लिए वैकल्पिक के रूप में मान दिया है और 56 के रूप में मूल्य दिया है। यदि आप ध्यान दें, तो IntelliSense आपको वैकल्पिक तर्क दिखाता है जैसा कि नीचे की छवि में दिखाया गया है।
Console.WriteLine("Area with Optional Argument : ");
area = FindAreaWithOptional(120);
Console.WriteLine(area);
Console.Read();
ध्यान दें कि संकलन करते समय हमें कोई त्रुटि नहीं मिली और यह आपको निम्नानुसार आउटपुट देगा।
वैकल्पिक विशेषता का उपयोग करना।
वैकल्पिक तर्क को लागू करने का दूसरा तरीका [Optional]
कीवर्ड का उपयोग करना है। यदि आप वैकल्पिक तर्क के लिए मान पारित नहीं करते हैं, तो उस तर्क के लिए उस डेटाटाइप का डिफ़ॉल्ट मान असाइन किया जाता है। Optional
कीवर्ड "Runtime.InteropServices" नामस्थान में मौजूद है।
using System.Runtime.InteropServices;
private static double FindAreaWithOptional(int length, [Optional]int width)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
area = FindAreaWithOptional(120); //area=0
और जब हम फ़ंक्शन को कॉल करते हैं, तो हमें 0 मिलता है क्योंकि दूसरा तर्क पारित नहीं होता है और इंट का डिफ़ॉल्ट मान 0 होता है और इसलिए उत्पाद 0 होता है।