सशर्त विशेषता एक विधि या वर्ग को चिह्नित करने के लिए उपयोग किया जाने वाला टैग है जिसका निष्पादन प्रीप्रोसेसिंग पहचानकर्ता की परिभाषा पर निर्भर करता है।
एक सशर्त विशेषता सशर्त संकलन निर्दिष्ट करने के लिए एक शर्त को इंगित करती है जिसमें प्रतीकों की परिभाषा के आधार पर विधियों को चुनिंदा रूप से बुलाया जाता है। यह संकलक को (माइक्रोसॉफ्ट इंटरमीडिएट भाषा में) संकलित करने या किसी शर्त के आधार पर कोड के विशिष्ट ब्लॉकों को संकलित करने का निर्देश देता है - चाहे एक विशिष्ट सशर्त संकलन प्रतीक परिभाषित किया गया हो या नहीं। यदि विशिष्ट प्रतीकों को तत्काल परिभाषित नहीं किया गया है, तो उस विधि या कक्षा को संकलक द्वारा अनदेखा कर दिया जाएगा।
एक सशर्त विशेषता में निम्नलिखित विशेषताएं हैं:
- इसे विधियों और वर्गों पर लागू किया जा सकता है, लेकिन केवल तभी जब वे किसी विशेषता से प्राप्त होते हैं।
- एक वर्ग के लिए सशर्त विशेषता लागू करते समय, विशेषता वर्ग केवल मेटाडेटा को उत्सर्जित किया जाएगा यदि सशर्त संकलन प्रतीक परिभाषित किया गया हो।
- यह एक पैरामीटर लेता है, जो संकलन को नियंत्रित करने वाला पहचानकर्ता प्रतीक है।
- कंडीशनल मेथड या एट्रिब्यूट क्लास को दिए गए तर्कों को कंपाइलर द्वारा टाइप-चेक किया जाएगा।
- यह पूरी तरह से संकलक द्वारा ध्यान रखा जाता है न कि रन टाइम द्वारा।
- इसे प्रतिनिधि-निर्माण अभिव्यक्ति में प्रयुक्त विधि पर लागू नहीं किया जा सकता है।
- यह सशर्त विधि के लिए उत्पन्न कोड को प्रभावित नहीं करता है, लेकिन विधि को कॉल को प्रभावित करता है।
एक सशर्त विशेषता एक घोषणात्मक प्रोग्रामिंग पैटर्न प्रदान करती है और स्रोत कोड को आसानी से बनाए रखने में मदद करती है। विधि स्तर पर एक सशर्त विशेषता लागू करने से, स्रोत कोड अधिक पठनीय होता है। सशर्त संकलन के लिए किसी विधि के कॉलर को अतिरिक्त कोड लेने की आवश्यकता नहीं है। अनुप्रयोग से संबंधित नैदानिक जानकारी प्रदर्शित करने और लॉग करने के लिए पहचानकर्ता DEBUG का उपयोग करके डीबग बिल्ड में ट्रेसिंग और लॉगिंग कार्यात्मकताओं को सक्षम करने के लिए एक सशर्त विशेषता का उपयोग किया जाता है। इसके अलावा, यह डिबग बिल्ड (विकास के लिए उपयोग की जाने वाली प्रणालियों में) से संबंधित तर्क को रिलीज़ बिल्ड से अलग करने में मदद करता है, जो साइट और एप्लिकेशन में तैनात हैं। कोड दोहराव के बिना एक सॉफ्टवेयर के कई संस्करणों (कुछ संस्करण में चयनित सुविधाओं के साथ) को बनाए रखने के लिए, सशर्त संकलन सही तकनीक बनाता है जिसके द्वारा एकल मुख्य स्रोत कोड को उनके लिए परिभाषित संबंधित प्रतीकों के आधार पर कई संस्करणों के लिए बनाए रखा जाता है।
सशर्त विशेषता का उपयोग करते समय पालन करने के लिए कुछ नियम निम्नलिखित हैं:
- एक वर्ग या संरचना घोषणा के अंदर एक सशर्त विधि में वापसी प्रकार शून्य होना चाहिए।
- कई पहचानकर्ताओं को सशर्त विशेषताओं के रूप में उपयोग करते समय, विधि (ओं) का समावेश तार्किक या तार्किक और परिभाषित प्रतीकों के परिणाम पर आधारित होता है।
- इसे इंटरफ़ेस घोषणा में किसी विधि पर निर्दिष्ट नहीं किया जा सकता है।
- एक सशर्त विधि "ओवरराइड" कीवर्ड से पहले नहीं हो सकती है, लेकिन यह आभासी हो सकती है। यदि ओवरराइड किया जाता है, तो इसे सशर्त रूप से सशर्त माना जाता है।
- सशर्त संकलन के लिए माने जाने वाले प्रतीकों को स्रोत कोड में कंपाइलर कमांड-लाइन विकल्प या OS शेल से पर्यावरण चर के रूप में या प्रागमास (प्रीप्रोसेसर निर्देश "#define" का उपयोग करके) के रूप में परिभाषित किया जा सकता है।
- C++ के विपरीत, C# में प्रतीकों की परिभाषा किसी भी क्रम में हो सकती है और इसलिए "#define" और एक सशर्त विधि के बीच क्रम को ठीक से सेट करना होगा।
यद्यपि "#if और #endif" का उपयोग सशर्त विशेषता के लिए एक वैकल्पिक विकल्प बनाता है, बाद वाला पूर्व की तुलना में अधिक स्वच्छ, सुरुचिपूर्ण और कम त्रुटि-प्रवण दृष्टिकोण प्रदान करता है। आंतरिक रूप से, अंतर यह है कि किसी विधि के लिए सशर्त विशेषता का उपयोग करते समय, विधि अभी भी असेंबली का हिस्सा होगी और लोड नहीं होगी। लेकिन #if / #endif के मामले में, असेंबली में विधि दिखाई नहीं देगी।
0 Comments