Optional Parameter in C#

Optional Parameter in C#: C# हमें किसी Method में Optional Parameters Specify करने की सुविधा भी Provide करता है। Optional Parameters एक ऐसी व्‍यवस्था है, जिसका प्रयोग करके हम एक ही Method को कई तरीकों के Parameters Pass करते हुए Invoke कर सकते हैं। Optional Parameters को भी हम निम्न उदाहरण Program द्वारा ज्यादा आसानी से समझ सकते हैं:

// File Name: OptionalParameters.cs
using System;

namespace CSharpIntermediateConstructsMethod
{
    class OptionalParameters
    {
        private static void Main(string[] args)
        {
            Console.WriteLine("Method Invoke Without Parameters: {0}", Addition());
            Console.WriteLine("Method Invoke With 1 Parameters {0}", Addition(10));
            Console.WriteLine("Method Invoke With 2 Parameters {0}", Addition(10, 20));
            Console.WriteLine("Method Invoke With 3 Parameters {0}", Addition(10, 20, 30));
        }

        static int Addition(int x = 0, int y = 0, int z = 0)
        {
            return x + y + z;
        }
    }
}

// Output:
   Method Invoke Without Parameters: 0
   Method Invoke With 1 Parameters 10
   Method Invoke With 2 Parameters 30
   Method Invoke With 3 Parameters 60

जैसाकि हम इस Program के Output द्वारा समझ सकते हैं कि हमने इस Program में Addition() नाम का केवल एक ही Method Create किया है, लेकिन उसी एक Method को निम्नानुसार चार तरीके से Call किया है:

Addition();
Addition(10);
Addition(10, 20);
Addition(10, 20, 30)

और एक ही Method चारों बार बिना किसी तरह का Error देते हुए उपयुक्त Output Return कर रहा है। ऐसा केवल Optional Parameters की वजह से ही सम्भव है। क्योंकि इस Program में हमने Addition() Method को निम्नानुसार तरीके से Define किया है:

static int Addition(int x = 0, int y = 0, int z = 0)
{
return x + y + z;
}

जैसाकि इस Method के Header में हम देख सकते हैं कि हमने तीनों ही Parameters को Default मान 0 Set कर दिया है। इसलिए जब उपरोक्त Program के Main() Method का निम्नानुसार पहला Statement Execute होता है:

Console.WriteLine(“Method Invoke Without Parameters: {0}”, Addition());

तो इस Statement के Addition() Method में एक भी Parameter Pass न करने की वजह से C# Compiler x, yz तीनों ही Parameters के Default मान 0 को आपस में जोडकर निम्नानुसार पहला Output Return कर देता है:

Method Invoke Without Parameters: 0

इसी तरह से जब उपरोक्त Program के Main() Method का निम्नानुसार दूसरा Statement Execute होता है:

Console.WriteLine(“Method Invoke With 1 Parameters {0}”, Addition(10));

तो इस Statement के Addition() Method में केवल एक Parameter Pass करने की वजह से C# Compiler x नाम के Parameter को तो मान 10 Assign कर देता है जबकि yz नाम के दोनों Parameters के Default मान 0 को Use करते हुए तीनों मानों को आपस में जोडकर निम्नानुसार दूसरा Output Return कर देता है:

Method Invoke With 1 Parameters 10

फिर जब उपरोक्त Program के Main() Method का निम्नानुसार तीसरा Statement Execute होता है:

Console.WriteLine(“Method Invoke With 2 Parameters {0}”, Addition(10, 20));

तो इस Statement के Addition() Method में केवल दो Parameter Pass करने की वजह से C# Compiler x नाम के Parameter को मान 10y नाम के Parameter को मान 20 Assign कर देता है जबकि z नाम के Parameter के Default मान 0 को Use करते हुए तीनों मानों को आपस में जोडकर निम्नानुसार दूसरा Output Return कर देता है:

Method Invoke With 2 Parameters 30

जबकि अन्त में उपरोक्त Program के Main() Method के निम्नानुसार चौथे Statement के Execute होने पर:

Console.WriteLine(“Method Invoke With 3 Parameters {0}”, Addition(10, 20, 30));

तो इस Statement के Addition() Method में तीनों Parameter Pass करने की वजह से C# Compiler x नाम के Parameter को मान 10, y नाम के Parameter को मान 20z नाम के Parameter को मान 30 Assign कर देता है और तीनों मानों को आपस में जोडकर निम्नानुसार दूसरा Output Return कर देता है:

Method Invoke With 3 Parameters 60

इस तरह से Optional Parameters Specify करके हम एक ही Method को कई तरह के Parameters Pass करके अलग-अलग तरीके का Output Generate करने की सुविधा प्राप्त कर लेते हैं।

जब हम Optional Parameters Specify करते हैं, तब हमें हमेंशा इस बात का ध्‍यान रखना होता है कि Optional Parameters को हमेंशा Define किए जाने वाले Method के Right Side से Left Side के Parameters को Set करना चाहिए क्योंकि Pass होने वाले Parameters हमेंशा Left Side से Right Side की ओर Fill होना शु: होते हैं।

यानी यदि हम हमारे पिछले Program में Define किए गए Addition() Method को निम्नानुसार तरीके से केवल xy Parameters को ही Default मान Specify करें%

static int Addition(int x = 0, int y = 0, int z)
{
return x + y + z;
}

तो इस Method को जब निम्नानुसार Statement द्वारा Call किया जाएगा:

Addition(10, 20)

तो मान 10 Addition Method के Parameter x को तथा मान 20 Parameter y को Assign हो जाएगा, जबकि Parameter z में कोई मान Assign नहीं होगा। क्योंकि न तो हमने इसमें कोई Default मान Set किया है, न ही Addition() Method से इस तीसरे Parameter के लिए कोई मान आ रहा है। परिणामस्वरूप C# Compiler Error Generate करेगा। लेकिन यदि हम इसी Method को निम्नानुसार तरीके से Define करें:

static int Addition(int x, int y = 0, int z= 0)
{
return x + y + z;
}

तो अब इस Method को जब निम्नानुसार Statement द्वारा Call करने पर कोई Error Generate नहीं होगा:

Addition(10, 20)

क्योंकि इस बार मान 10 Addition Method के Parameter x को तथा मान 20 Parameter y को Assign हो जाएगा, जबकि Parameter z में Default मान 0 होने की वजह से x, yz तीनों में ही एक मान होगा। परिणामस्वरूप C# Compiler उपयुक्त Output Generate करेगा।

इसीलिए Optional Parameters को हमेंशा Right to Left Side में Set करना चाहिए क्योंकि Pass होने वाले Parameters हमेंशा Left to Right Assign होते हैं।

जब हम Optional Parameters या दूसरे शब्दों में कहें तो Default Arguments या Default Parameters Declare करते हैं, तब हमें इस बात का भी ध्‍यान रखना होता है कि हम सभी Type के Parameters को Default Value Set नहीं कर सकते अथवा Optional Parameter नहीं बना सकते।

हालांकि हम उन सभी Value Types को Optional Parameter की तरह Define कर सकते हैं, जिनके मान को Compile Time में Determine किया जा सके जबकि केवल उन्हीं Reference Types को Optional Parameters की तरह Define कर सकते हैं, जिनका Default मान null होता है।

क्योंकि Reference Types हमेंशा एक से ज्यादा Data Members को Represent करते हैं और Assignment Operator का प्रयोग करके किसी Reference Type के एक से ज्यादा Data Members को Default Value Set नहीं किया जा सकता। इस व्‍यवस्था को हम निम्न चित्र द्वारा बेहतर तरीके से समझ सकते हैं:

Optional Parameter in C# - Hindi

हालांकि Optional Parameters Specify करने पर Method को Call करते समय हम हमेंशा Method के Right Side के Parameters को ही Omit कर सकते हैं। लेकिन यदि हम Method के बीच के किसी Optional Parameter को Omit करना चाहें, तो इस जरूरत को पूरा करने के लिए हम Method Call करते समय Named Parameter को Use करके ऐसा कर सकते हैं।

Method Overloading in C# - C# Named Parameters
How to Declare Array in C#

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW GET DEMO REVIEWS