Tuesday, August 10, 2021

C# Access Modifiers in Hindi

सी शार्प लैंग्वेज के अंतर्गत किसी टाइप जैसे class या struct के लिए दो तरह के access modifier का प्रयोग किया जाता है, उनके नाम public और internal हैं। बाय डिफॉल्ट, जब किसी टाइप के साथ मॉडिफाईर नहीं दिया होता है तब हम मानते हैं कि उस टाइम के साथ इंटरनल मोडीफायर का प्रयोग हुआ है।

struct
यह बात याद रखें किए स्ट्रक्ट एक ऐसा टाइप है जिसका derived टाइप नहीं बनाया जा सकता है जबकि क्लास का derived टाइप होता है। कहने का मतलब पैरंट क्लास है तो derived क्लास भी हो सकता है जबकि किसी स्ट्रक्ट का derived स्ट्रक्ट नहीं होता है। दूसरे शब्दों में स्ट्रक्ट इन्हेरिटेंस को सपोर्ट नहीं करता है।

internal
जब किसी टाइप जैसे क्लास या स्ट्रक्ट के साथ internal मॉडिफाइर का प्रयोग किया जाता है तब उस टाइप का प्रयोग केवल उसी एसेंबली के भीतर किया जा सकता है जिसके भीतर उस टाइप को डिफाइन किया गया होता है।

public
जब किसी टाइप जैसे क्लास या स्ट्रक्ट के साथ public मॉडिफाइर का प्रयोग किया जाता है तब उस टाइप का प्रयोग  न केवल उसी एसेंबली के भीतर किया जा सकता है बल्कि किसी दूसरे असेम्बली के भीतर भी उस टाइप का प्रयोग किया जा सकता है।

Access modifiers
एक्सेस मोडीफायर का उपयोग ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के एनकैप्सूलेशन के अवधारणा को ध्यान में रखते हुए किया जाता है। एक्सेस मोडीफायर की वजह से कोई क्लास या स्ट्रक्चर एनकैप्सूलेट्स हो जाता है। कहने का अर्थ यह है कि इस क्लास या स्ट्रक्ट को किस-किस असेम्बली में एक्सेस किया जा सकता है, इसका निर्धारण एक्सेस मोडीफायर के द्वारा तय हो जाता है।

Access modifiers of members of a type
जिस तरह टाइप का एक्सेस मोडीफायर होता है उसी प्रकार उस टाइप के मेंबर के लिए भी एक्सेस मोडीफायर का प्रयोग किया जाता है। जहां तक टाइप के एक्सेस मोडीफायर की बात है यह दो प्रकार का होता है पब्लिक और इंटरनल जैसा कि हमने पहले देख लिया है। परंतु टाइप के मेंबर्स के एक्सेस मोडीफायर की संख्या इनसे ज्यादा होती है टाइप के मेंबर्स किए एक्सेस मोडीफायर्स इस प्रकार से है पब्लिक, प्राइवेट, प्रोटेक्टेड, इंटरनल, प्रोटेक्टेड इंटरनल, प्राइवेट इंटरनल।

Types of member
किसी टाइप के भीतर दो तरह के मेंबर होते हैं।
१) वेरिएबल मेंबर या फील्ड और २) मेथड मेंबर 

Field and method
क्लास के भीतर किसी वेरिएबल मेंबर को फील्ड कहा जाता है। यह क्लास के state को बताता है। क्लास के भीतर बने function को method कहा जाता है। यह क्लास के behaviour को बताता है।

अब एक-एक करके हम टाइप के मेंबर के एक्सेस मोडीफायर को समझेंगे। यहां टाइप से तात्पर्य class या struct से है।

public
जब कोई टाइप मेंबर पब्लिक होता है तो इसका अभिप्राय यह है कि यह मेंबर किसी भी दूसरे टाइप में एक्सेस किया जा सकता है। अब एक बात समझने वाली है कि क्या ऐसा संभव है की टाइप का एक्सेस मोडीफायर इंटरनल हो और उसके मेंबर का एक्सेस मोडीफायर पब्लिक हो? यह पाठक स्वयं सोचे और विसुअल स्टूडियो में प्रयोग कर समझें।

private
जब कोई टाइप मेंबर प्राइवेट होता है तो इसका अभिप्राय यह है कि यह मेंबर केवल इसी टाइप के भीतर प्रयोग किया जा सकता है। इस टाइप के अलावा अन्यत्र इसका प्रयोग नहीं किया जा सकता है। अगर टाइप पब्लिक है तो किसी बाहरी असेम्बली में इस टाइप का प्रयोग हो सकता है और तब कहने की जरूरत नहीं है कि तब उसके प्राइवेट मेम्बर का उस बाहरी असेम्बली में प्रयोग होगा।

protected
जब कोई टाइप मेंबर प्रोटेक्टेड होता है इसका अभिप्राय यह है कि यह मेंबर ना केवल इस टाइप के भीतर प्रयोग किया जा सकता है अपितु इस टाइप से derived टाइप के भीतर भी प्रयोग किया जा सकता है। अब यहां दो संभावना बनती है १) अगर टाइप इंटरनल हो और मेंबर प्रोटेक्टर हो और २) दूसरी संभावना यह है की टाइप पब्लिक हो और उसका मेंबर प्रोटेक्टर हो।

अगर टाइप इंटरनल हो और मेंबर प्रोटेक्टेड हो तो ऐसी हालत में इस प्रोटेक्टेड मेंबर का प्रयोग वर्तमान असेम्बली के भीतर ही किया जा सकता है परन्तु शर्त यह है कि इसका प्रयोग उस टाइप के अतिरिक्त उस टाइप से व्युत्पन्न टाइप के भीतर किया जा सकता है, अन्यत्र नहीं।

अगर टाइप पब्लिक हो और मेंबर प्रोटेक्टेड हो तो ऐसी हालत में इस प्रोटेक्टेड मेंबर का प्रयोग वर्तमान और बाह्यअसेम्बली के भीतर किया जा सकता है परन्तु शर्त यह है कि इसका प्रयोग उस टाइप के अतिरिक्त उस टाइप से व्युत्पन्न टाइप के भीतर किया जा सकता है, अन्यत्र नहीं।

ध्यान देने वाली बात यह है कि struct टाइप का व्युत्पन्न टाइप नहीं होता। दूसरे शब्दों में, struct टाइप inheritance को सपोर्ट नहीं करता है। अतः struct टाइप के मेम्बर protected नहीं हो सकते हैं। इसका अर्थ यह भी है कि ये मेम्बर्स protected internal और private protected भी नहीं हो सकते हैं। protected internal और private protected के बारे में आगे चर्चा की गई है।

प्रोटेक्टेड इंटरनल protected internal
अगर टाइप पब्लिक हो और मेंबर प्रोटेक्टेड इंटरनल हो तो ऐसी हालत में इस प्रोटेक्टेड इंटरनल मेंबर का प्रयोग वर्तमान असेम्बली के भीतर ही किया जा सकता है किसी बाहरी असेम्बली में नहीं। वर्तमान असेम्बली में इसका प्रयोग उस टाइप के अतिरिक्त उस टाइप से व्युत्पन्न टाइप के भीतर किया जा सकता है, अन्यत्र नहीं।

प्रोटेक्टेड इंटरनल मोडीफायर का प्रयोग तब करना चाहिए जब टाइप पब्लिक हो और आप चाहते हैं कि उस टाइप के मेंबर का प्रयोग किसी बाहरी असेम्बली में नहीं हो। बल्कि उसका प्रयोग वर्तमान असेम्बली के भीतर टाइप के अतिरिक्त उस टाइप के व्युत्पन्न टाइप में ही हो।

प्राइवेट प्रोटेक्टेड




No comments:

Post a Comment

Hot Topics