क्या कोई मुझे 'संरक्षित' और 'संरक्षित आंतरिक' संशोधक के बीच अंतर को विस्तृत कर सकता है? ऐसा लगता है कि वे एक ही तरीके से व्यवहार करते हैं।
क्या कोई मुझे 'संरक्षित' और 'संरक्षित आंतरिक' संशोधक के बीच अंतर को विस्तृत कर सकता है? ऐसा लगता है कि वे एक ही तरीके से व्यवहार करते हैं।
जवाबों:
"संरक्षित आंतरिक" एक्सेस संशोधक "संरक्षित" और "आंतरिक" संशोधक दोनों का एक संघ है।
से MSDN, पहुँच संशोधक (सी # प्रोग्रामिंग गाइड) :
संरक्षित :
प्रकार या सदस्य को केवल उसी वर्ग या संरचना में कोड द्वारा या उस वर्ग से ली गई कक्षा में पहुँचा जा सकता है।
आंतरिक :
प्रकार या सदस्य को किसी भी विधानसभा में किसी भी कोड द्वारा पहुँचा जा सकता है, लेकिन किसी अन्य विधानसभा से नहीं।
सुरक्षित आंतरिक :
प्रकार या सदस्य को विधानसभा में किसी भी कोड के द्वारा एक्सेस किया जा सकता है जिसमें यह घोषित किया गया है, या किसी अन्य विधानसभा में एक व्युत्पन्न वर्ग के भीतर से। एक अन्य विधानसभा से प्रवेश एक वर्ग घोषणा के भीतर होना चाहिए जो उस वर्ग से प्राप्त होता है जिसमें संरक्षित आंतरिक तत्व घोषित होता है, और इसे व्युत्पन्न वर्ग प्रकार के उदाहरण के माध्यम से होना चाहिए।
ध्यान दें : का protected internal
अर्थ है " protected
या internal
" (किसी भी विधानसभा में कोई वर्ग, या किसी भी व्युत्पन्न वर्ग - भले ही वह अलग विधानसभा में हो)।
... और पूर्णता के लिए:
निजी :
प्रकार या सदस्य को केवल उसी कक्षा या संरचना में कोड द्वारा एक्सेस किया जा सकता है।
जनता :
प्रकार या सदस्य को उसी विधानसभा या किसी अन्य विधानसभा में किसी अन्य कोड द्वारा एक्सेस किया जा सकता है जो इसे संदर्भित करता है।
पहुंच वर्तमान विधानसभा के भीतर युक्त वर्ग से व्युत्पन्न वर्ग या प्रकार तक सीमित है।
( C # 7.2 के बाद से उपलब्ध )
protected
किसी भी विधानसभा से किसी भी उपवर्ग द्वारा इस्तेमाल किया जा सकता है।
protected internal
वह सब कुछ protected
है, साथ ही एक ही विधानसभा में कुछ भी इसे एक्सेस कर सकता है।
महत्वपूर्ण रूप से, इसका अर्थ "एक ही विधानसभा में उप-वर्ग" नहीं है - यह दो का मिलन है, न कि प्रतिच्छेदन।
private protected
एक्सेस मॉडिफायर के साथ प्राप्त किया जा सकता है जो C # 7.2 में पेश किया गया था
व्यवहार में, विधियों के बारे में:
संरक्षित - विरासत में मिली कक्षाओं के लिए सुलभ, अन्यथा निजी।
आंतरिक - केवल विधानसभा के अंदर की कक्षाओं के लिए सार्वजनिक, अन्यथा निजी।
संरक्षित आंतरिक - का अर्थ है संरक्षित या आंतरिक - विधि विरासत में मिली वर्गों और विधानसभा के अंदर किसी भी वर्ग के लिए सुलभ हो जाती है ।
protected
और internal
?
protected internal
।
private protected
डॉक्स.माइकोमिक्स.com
"संरक्षित आंतरिक" एक्सेसर्स के दायरे को समझने में अभी भी बहुत भ्रम है, हालांकि अधिकांश ने परिभाषा को सही ढंग से परिभाषित किया है। इससे मुझे "संरक्षित" और "संरक्षित आंतरिक" के बीच के भ्रम को समझने में मदद मिली:
सार्वजनिक वास्तव में विधानसभा के अंदर और बाहर सार्वजनिक है ( सार्वजनिक आंतरिक / सार्वजनिक बाहरी )
संरक्षित वास्तव में विधानसभा के अंदर और बाहर संरक्षित है ( संरक्षित आंतरिक / संरक्षित बाहरी ) (शीर्ष स्तर की कक्षाओं पर अनुमति नहीं है)
निजी वास्तव में विधानसभा के अंदर और बाहर निजी है ( निजी आंतरिक / निजी बाहरी ) (शीर्ष स्तर की कक्षाओं पर अनुमति नहीं है)
आंतरिक वास्तव में विधानसभा के अंदर सार्वजनिक है लेकिन विधानसभा के बाहर की तरह निजी ( सार्वजनिक आंतरिक / बाहरी बाहरी )
संरक्षित आंतरिक वास्तव में विधानसभा के अंदर सार्वजनिक है लेकिन विधानसभा के बाहर संरक्षित है ( सार्वजनिक आंतरिक / संरक्षित बाहरी ) (शीर्ष स्तर की कक्षाओं पर अनुमति नहीं है)
जैसा कि आप देख सकते हैं कि संरक्षित आंतरिक एक बहुत ही अजीब जानवर है। सहज नहीं है।
अब यह सवाल उठता है कि Microsoft ने एक ( संरक्षित आंतरिक / बहिष्कृत बाहरी ) क्यों नहीं बनाया , या मुझे लगता है कि किसी तरह का "निजी संरक्षित" या "आंतरिक संरक्षित" है? जबरदस्त हंसी। अधूरा लगता है?
भ्रम में जोड़ा गया तथ्य यह है कि आप सार्वजनिक या संरक्षित आंतरिक नेस्टेड सदस्यों को संरक्षित, आंतरिक या निजी प्रकार के अंदर घोंसला बना सकते हैं। आप एक आंतरिक वर्ग के अंदर एक नेस्टेड "संरक्षित आंतरिक" का उपयोग क्यों करेंगे जो विधानसभा पहुंच से बाहर है?
Microsoft का कहना है कि इस तरह के नेस्टेड प्रकार उनके मूल प्रकार के दायरे द्वारा सीमित होते हैं, लेकिन यह वह नहीं है जो कंपाइलर कहता है। आप आंतरिक कक्षाओं के अंदर संरक्षित आंतरिक लोगों को संकलित कर सकते हैं जो कि दायरे को केवल विधानसभा तक सीमित करना चाहिए।
मेरे लिए यह अधूरा डिजाइन जैसा लगता है। उन्हें एक प्रणाली के लिए सभी प्रकार के दायरे को सरल बनाना चाहिए जो स्पष्ट रूप से वंशानुक्रम पर विचार करते हैं, लेकिन सुरक्षा और पदानुक्रमित प्रकार के पदानुक्रम भी हैं। यह अपूर्ण स्कूपिंग प्रणाली के आधार पर प्रकार और सदस्यों की पहुंच की खोज के बजाय वस्तुओं को बहुत सहज और दानेदार बनाने का काम करता था।
मैंने इन शर्तों के लिए बहुत स्पष्ट परिभाषाएँ पढ़ी हैं।
संरक्षित: प्रवेश कक्षा की परिभाषा और वर्ग से विरासत में मिली किसी भी कक्षा तक सीमित है। प्रकार या सदस्य को केवल उसी वर्ग या संरचना में या उस वर्ग से ली गई कक्षा में पहुँचा जा सकता है।
आंतरिक: प्रवेश विशेष रूप से वर्तमान परियोजना विधानसभा के भीतर परिभाषित वर्गों तक सीमित है। प्रकार या सदस्य को केवल उसी कक्षा में कोड द्वारा एक्सेस किया जा सकता है।
संरक्षित-आंतरिक: प्रवेश वर्तमान विधानसभा या वर्ग युक्त से व्युत्पन्न प्रकारों तक सीमित है।
संरक्षित सदस्य
किसी वर्ग में संरक्षित वर्ग में केवल उपलब्ध वर्ग में (जिसमें वह घोषित किया गया है) और विधानसभा के भीतर और विधानसभा के बाहर भी।
इसका मतलब है कि अगर एक वर्ग जो विधानसभा के बाहर रहता है, तो उस वर्ग को केवल विरासत में मिला हुआ अन्य विधानसभा के संरक्षित सदस्य का उपयोग कर सकता है।
हम विधानसभा के बाहर संरक्षित सदस्य को उस वर्ग से विरासत में मिला सकते हैं और उसका उपयोग केवल व्युत्पन्न वर्ग में कर सकते हैं।
नोट: व्युत्पन्न वर्ग में ऑब्जेक्ट का उपयोग करके संरक्षित सदस्य सुलभ नहीं हैं।
आंतरिक सदस्य
किसी वर्ग का आंतरिक सदस्य उपलब्ध है या सभा के भीतर पहुंच बनाकर या तो वस्तु या एक व्युत्पन्न वर्ग में या आप कह सकते हैं कि यह विधानसभा के भीतर सभी वर्गों में उपलब्ध है।
नोट: आंतरिक सदस्य असेंबली के बाहर या तो ऑब्जेक्ट बनाने या एक व्युत्पन्न वर्ग का उपयोग करके सुलभ नहीं होते हैं।
संरक्षित आंतरिक
संरक्षित आंतरिक पहुंच संशोधक संयोजन संरक्षित या आंतरिक है।
संरक्षित आंतरिक सदस्य पूरी विधानसभा के भीतर उपलब्ध हो सकता है जिसमें उसने या तो वस्तु बनाने की घोषणा की है या उस वर्ग को विरासत में मिली है। और विधानसभा के बाहर एक व्युत्पन्न वर्ग में ही पहुँचा जा सकता है।
नोट: संरक्षित आंतरिक सदस्य एक ही विधानसभा के भीतर आंतरिक के रूप में काम करता है और विधानसभा के बाहर के लिए संरक्षित के रूप में काम करता है।
सार्वजनिक - सार्वजनिक रूप से घोषित सदस्यों (कार्य और चर) को कहीं से भी एक्सेस किया जा सकता है।
निजी - निजी सदस्यों को कक्षा के बाहर से प्रवेश नहीं दिया जा सकता है। यह एक सदस्य के लिए डिफ़ॉल्ट एक्सेस स्पेसियर है, अर्थात यदि आप किसी सदस्य (चर या फ़ंक्शन) के लिए एक्सेस स्पेसियर निर्दिष्ट नहीं करते हैं, तो इसे निजी माना जाएगा। इसलिए, स्ट्रिंग PhoneNumber; निजी स्ट्रिंग PhoneNumber के बराबर है।
संरक्षित - संरक्षित सदस्यों को केवल बाल वर्गों से ही एक्सेस किया जा सकता है।
आंतरिक - यह केवल एक ही विधानसभा के भीतर पहुँचा जा सकता है।
संरक्षित आंतरिक - यह एक ही विधानसभा के साथ-साथ व्युत्पन्न वर्ग में भी पहुँचा जा सकता है।
संरक्षित आंतरिक सर्वश्रेष्ठ सुइट्स जब आप एक सदस्य या प्रकार को किसी अन्य विधानसभा से एक व्युत्पन्न वर्ग में उपयोग करने के लिए चाहते हैं, उसी समय सदस्य या माता-पिता विधानसभा में उस वर्ग से प्राप्त किए बिना टाइप करना चाहते हैं जहां यह घोषित किया गया है। इसके अलावा, यदि आप केवल किसी सदस्य का उपयोग करना चाहते हैं या किसी अन्य वर्ग से प्राप्त करना चाहते हैं, तो उसी विधानसभा में आप केवल आंतरिक उपयोग कर सकते हैं।
protected internal
हो सकता है इसलिए यहprotected
वर्तमान विधानसभा में है और बाहरी रूप से पूरी तरह से अनुपलब्ध है?