आंतरिक बनाम निजी एक्सेस संशोधक


जवाबों:


516

आंतरिक असेंबली स्कोप के लिए होता है (अर्थात समान .exe या .dll में कोड से केवल सुलभ)

निजी वर्ग के दायरे के लिए है (यानी एक ही कक्षा में कोड से सुलभ)।


6
मेरे पास एक तेज़ सवाल है; अगर मैं किसी विधानसभा में किसी विधानसभा के अंदर नाम के रूप में एक वर्ग की घोषणा करता हूं, तो वह वर्ग आंतरिक है, मैं उस वर्ग को विधानसभा के भीतर दोनों मामलों में एक्सेस कर सकता हूं, फिर निजी वर्ग और आंतरिक वर्ग के बीच क्या अंतर है? या जब वर्ग के भीतर कक्षा घोंसले के लिए इस्तेमाल किया जाता है तो कक्षाओं के संदर्भ में निजी और आंतरिक संशोधक होता है?
मेयोटिक

2
मैंने किसी अन्य प्रोजेक्ट के संदर्भ में विशिष्ट प्रोजेक्ट / असेंबली को जोड़ा और दोनों निजी के साथ-साथ आंतरिक मुझे इस विशेष वर्ग को नामस्थान के भीतर पहुंचने से रोकते हैं, इसलिए फिर से ... निजी और आंतरिक कक्षाओं के बीच अंतर है? धन्यवाद
२१:

9
आप शीर्ष स्तर के वर्ग को निजी घोषित नहीं कर सकते। संकलक आपको रोक देगा।
द गेटकीपर

6
@NetSkay: यदि आप एक सार्वजनिक वर्ग के अंदर एक निजी वर्ग की घोषणा करते हैं तो यह वर्ग आपके विधानसभा में अन्य वर्गों द्वारा सुलभ नहीं है लेकिन यदि आप इस वर्ग को आंतरिक घोषित करते हैं तो यह विधानसभा में सुलभ होगा। हालांकि, वे दोनों विधानसभा के बाहर सुलभ नहीं होंगे।
योगेश जिंदल

2
यदि आप VB.NET पृष्ठभूमि से आ रहे हैं, तो C # का "आंतरिक" कीवर्ड VB.NET के "मित्र" कीवर्ड के बराबर है।
ब्रेन2000

207

नीचे एक स्पष्टीकरण खोजें। आप अधिक जानकारी के लिए इस लिंक की जाँच कर सकते हैं - http://www.dotnetbull.com/2013/10/public-protected-pStreet-internal-access-modifier-in-c.html

निजी: - निजी सदस्य केवल स्वयं के प्रकार (स्वयं के वर्ग) के भीतर ही सुलभ हैं।

आंतरिक: - आंतरिक सदस्य विधानसभा के भीतर (इसके व्युत्पन्न प्रकार) या वर्ग के उदाहरण से सुलभ हैं।

यहां छवि विवरण दर्ज करें

संदर्भ:

dotnetbull - c # में एक्सेस संशोधक क्या है


17
दिलचस्प है कि की Protected Internalतुलना में व्यापक पहुँच प्रदान करता है Protected
दान बेचारड

9
@, अच्छी तरह से सहमत हूँ। यह पढ़ने के लिए उपयोगी हो सकता है और के बारे में सोच सकता है protected internalके रूप में protected OR internal
चेसोफैन्डर

7
क्या With Typeमतलब है?
जेम्स विर्ज़बा

@ हाँ, मुझे लगता है कि यह सिर्फ एक सत्य तालिका के रूप में कार्य करेगा और ANDउस मैट्रिक्स को सत्य है protected internal। सहज नहीं है। इसके बजाय यह सच है OR'd
ferr

1
संयोग से, C # 7.2 ने केवल "संरक्षित और आंतरिक" संशोधक जोड़ा है, हालांकि चुने गए वास्तविक कीवर्ड private protectedबहुत सहज नहीं हैं। जानकारी के लिए: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
जो सेवेल

70

internalसदस्य उस विधानसभा में सभी कोड के लिए दिखाई देते हैं जिन्हें वे घोषित किया गया है
(और [InternalsVisibleTo]विशेषता का उपयोग करके संदर्भित अन्य विधानसभाओं के लिए )

privateसदस्य केवल घोषित वर्ग के लिए दिखाई दे रहे हैं। (नेस्टेड क्लासेस सहित)

एक बाहरी (गैर-नेस्टेड) ​​वर्ग घोषित नहीं किया जा सकता है private, क्योंकि इसे निजी बनाने की कोई गुंजाइश नहीं है।

आपके द्वारा पूछे गए प्रश्न का उत्तर देने के लिए, protectedसदस्य सदस्यों की तरह privateहोते हैं, लेकिन सभी वर्गों में भी दिखाई देते हैं जो घोषित प्रकार को प्राप्त करते हैं। (लेकिन केवल कम से कम मौजूदा वर्ग की अभिव्यक्ति पर)


8

निजी - वर्ग / दायरे / संरचना ect में encapsulations '।

आंतरिक - विधानसभाओं में इनकैप्सुलेशन।


6

निजी सदस्य केवल उस कक्षा या निकाय के भीतर पहुँचते हैं जिसमें वे घोषित किए जाते हैं।

आंतरिक प्रकार या सदस्य केवल उसी विधानसभा में फ़ाइलों के भीतर पहुंच योग्य हैं


तो इसका उपयोग करने में क्या अंतर है? मैं अभी भी नहीं मिलता है: X
डेडफिश

4
निजी केवल कक्षा के भीतर से सुलभ हैं, आंतरिक विधानसभा (वीएस यानी डीएल / एक्सई फाइल में परियोजना) के भीतर से सुलभ है।
जेस्पर फेयर नूडसन

3

आंतरिक आपको कई व्यावसायिक तर्क वर्गों के बीच डेटा एक्सेस स्टैटिक क्लास (थ्रेड सेफ्टी के लिए) का संदर्भ देने, कहने की अनुमति देगा, जबकि कनेक्शन वर्ग में एक दूसरे के ऊपर उस वर्ग / यात्रा को प्राप्त करने के लिए उनकी सदस्यता नहीं ले रहा है, और अंततः एक डीएएल वर्ग को अनुमति देने से बचता है। सार्वजनिक स्तर पर पहुंच को बढ़ावा देना। यह डिजाइन और सर्वोत्तम प्रथाओं में अनगिनत समर्थन है।

एंटिटी फ्रेमवर्क इस प्रकार की पहुंच का अच्छा उपयोग करता है


0

आंतरिक सदस्य विधानसभा के भीतर पहुँचते हैं (केवल उसी परियोजना में पहुँच योग्य)

एक ही वर्ग के भीतर निजी सदस्य सुलभ हैं

शुरुआती के लिए उदाहरण

एक समाधान में 2 परियोजनाएं हैं (Project1, Project2) और Project1 में Project2 का संदर्भ है।

  • Project2 में लिखी गई सार्वजनिक विधि Project2 और Project1 में पहुँच योग्य होगी
  • Project2 में लिखी गई आंतरिक विधि केवल Project2 में नहीं, बल्कि Project1 में सुलभ होगी
  • Project2 के class1 में लिखी गई निजी विधि केवल उसी वर्ग के लिए सुलभ होगी। यह प्रोजेक्ट 1 में नहीं प्रोजेक्ट 2 के अन्य वर्गों में न तो सुलभ होगा।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.