Conditional Compilation C#

Conditional Compilation C#: Conditional Compilation का प्रयोग करके हम हमारे Source Code में इस बात को निश्चित कर सकते हैं कि हमें हमारे Code के किस Section को Compile करना है और किसको नहीं। Conditional Compilation तय करने के लिए हम #if, #else, #elif #endif Compilation Symbols को प्रयोग कर सकते हैं, जो कि C# के if, else, else…if Conditional Statements की तरह ही है और उन्हीं की तरह काम भी करते है।

जब हम Conditional Compilation करते हैं, तब हम C# के !, ==, !=, && || Operators को Use कर सकते हैं। इनके अलावा हम Compilation Symbols के साथ true false का भी प्रयोग कर सकते हैं।

#if #endif दोनों का प्रयोग करना जरूरी होता है, क्योंकि यदि हम #if Use करते हैं, तो हमें हमारे Conditional Statement Block का अन्त #endif द्वारा करना होता है। जबकि जरूरत के अनुसार हम इन दोनों के बीच #elif #else का प्रयोग कर सकते हैं।

#if and #endif

इस Pair का प्रयोग Exactly C# के if Statement की तरह करते हैं। अन्तर केवल इतना है कि ये Statement Conditional Compilation को तय करता है। जैसे:

File Name: ConditionalCompilation.cs
#define EXPERIMENTAL

using System;

namespace CSharpPreprocessor
{
    class ConditionalCompilation
    {
        static void Main()
        {
            #if PRODUCTION
                    Console.WriteLine("This is the perfect code to execute in Production.");
            #endif

            #if EXPERIMENTAL
                    Console.WriteLine("This is the doubtful code to execute in Experimental.");
            #endif
        }
    }
}

Output:
	This is the doubtful code to execute in Experimental.

जैसाकि हम इस Program द्वारा समझ सकते हैं कि यदि हम #define के साथ Source File की शुरूआत में EXPERIMENTAL Symbol Define करते हैं, तो हमें उपरोक्तानुसार Output प्राप्त होता है, जिसका मतलब ये है कि PRODUCTION Symbol वाला Code Block Execute नहीं हो रहा है।

जबकि यदि हम इसी Source Program में #define के साथ EXPERIMENTAL के स्थान पर PRODUCTION Symbol को Specify कर दें, तो हमारा Output बदल जाता है। यानी वो Code Block Execute होने लगता है, जिसे PRODUCTION Symbol के बीच Specify किया है।

इसी तरह से यदि हमें एक से ज्यादा Conditions के आधार पर यदि किसी Code Block को Compile करना हो, तो हम अन्‍य Operators का भी प्रयोग कर सकते हैं। जैसे:

File Name: ConditionalCompilationWithLogicalAND.cs
#define PRODUCTION
#define TRIAL

using System;

namespace CSharpPreprocessor
{
    class ConditionalCompilation
    {
        static void Main()
        {
            #if PRODUCTION && TRIAL
                  Console.WriteLine("This is the perfect code to execute in Production");
            #endif

            #if EXPERIMENTAL
                  Console.WriteLine("This is the doubtful code to execute in Experimental.");
            #endif
        }
    }
}
Output:
	This is the perfect code to execute in Production

इस Program में हमने PRODUCTION TRIAL दोनों Symbols को Define किया है, इसलिए ये Program EXPERIMENTAL Code Block को Execute नहीं कर रहा है, बल्कि उस Code Block को Execute कर रहा है, जिसमें दोनों Symbols को एक साथ && Operator के साथ Define किया गया है।

#else and #elif Directives

जिस तरह से हम if Statement Block Use करते हैं, उसी तरह से हमने पिछले Section में #if #endif Conditional Compilation Code Block को Define किया है। ठीक इसी तरह से हम #else #elif Directives को if … elseelse … if Statement की तरह Use करते हुए Conditional Compilation कर सकते हैं। जैसे:

File Name: ConditionalCompilationIfElseFormat.cs
#define PRODUCTION
#define TRIAL

using System;

namespace CSharpPreprocessor
{
    class ConditionalCompilation
    {
        static void Main()
        {
           #if EXPERIMENTAL
   	       Console.WriteLine("Compiled for experimental version.");
           #else
   	       Console.WriteLine("Compiled for release.");
           #endif

           #if EXPERIMENTAL && TRIAL
 	       Console.Error.WriteLine("Testing experimental trial version.");
           #else
	       Console.Error.WriteLine("Not experimental trial version.");
           #endif

            Console.WriteLine("This is in all versions.");
        }
    }
}

Output:
   Compiled for release.
   Not experimental trial version.
   his is in all versions.

जैसाकि इस Program के Code को देखकर ही हम समझ सकते हैं कि ये Code पूरी तरह से if…else Statement की तरह ही Execute हो रहा है। अन्तर केवल इतना है कि ये Code इस बात को तय कर रहा है कि Program का कौनसा हिस्सा कब Compile होगा और कौनसा नहीं।

इसी तरह से यदि हमें Multiple Conditions के आधार पर Conditional Compilation करना हो, तो हम #elif Directive को निम्नानुसार तरीके से Use कर सकते हैं:

File Name: ConditionalCompilationElseIfFormat.cs
#define PRODUCTION
#define TRIAL

using System;

namespace CSharpPreprocessor
{
    class ConditionalCompilation
    {
        static void Main()
        {
            #if EXPERIMENTAL
                Console.WriteLine("Compiled for experimental version.");
            #elif EXPERIMENTAL && TRIAL
                Console.Error.WriteLine("Testing experimental trial version.");
            #elif PRODUCTION && TRIAL
                Console.Error.WriteLine("Testing Production trial version.");
            #else
		Console.WriteLine("All in Production version");
            #endif

            Console.WriteLine("This is in all versions.");
        }
    }
}

Output:
   Testing Production trial version.
   This is in all versions.
C# Preprocessor Directives
C# Diagnostic Directives

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

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

BUY NOW GET DEMO REVIEWS