C # कक्षाओं और सदस्यों (फ़ील्ड्स, विधियों, आदि) के लिए डिफ़ॉल्ट दृश्यता?


164

मैं C # के विभिन्न पहलुओं की डिफ़ॉल्ट दृश्यता के लिए एक संदर्भ खोजने की कोशिश कर रहा हूं। वर्ग प्रकार, क्षेत्र, विधियाँ, एनम आदि।

क्या कोई अपनी डिफ़ॉल्ट दृश्यता (यानी, कोई उपसर्ग संशोधित संशोधक) के साथ इनमें से एक सूची प्रदान कर सकता है?



8
मैं इसे एक डुप्लिकेट नहीं मानूंगा ... यह प्रश्न विशिष्ट है (इस के लिए डिफ़ॉल्ट क्या है?), यह एक व्यापक है (क्या चूक हैं?)
WernerCD

जवाबों:


266

आपके द्वारा ढूंढी जा रही सभी जानकारी यहां और यहां मिल सकती है (धन्यवाद रीड कोपसे ):

पहले लिंक से:

कक्षाएं और संरचनाएं जो सीधे एक नाम स्थान के भीतर घोषित की जाती हैं (दूसरे शब्दों में, अन्य वर्गों या संरचनाओं के भीतर नेस्टेड नहीं हैं) या तो सार्वजनिक या आंतरिक हो सकती हैं। यदि कोई पहुँच संशोधक निर्दिष्ट नहीं है, तो आंतरिक डिफ़ॉल्ट है

...

नेस्टेड कक्षाओं और स्ट्रक्चर्स सहित वर्ग के सदस्यों और संरचना सदस्यों के लिए पहुँच स्तर डिफ़ॉल्ट रूप से निजी है

...

आंतरिक उपयोग के लिए डिफ़ॉल्ट इंटरफेस

...

प्रतिनिधि वर्ग और संरचना की तरह व्यवहार करते हैं। डिफ़ॉल्ट रूप से, उनके पास आंतरिक पहुंच होती है जब सीधे नामस्थान के भीतर घोषित किया जाता है, और नेस्टेड होने पर निजी एक्सेस


दूसरे लिंक से:

शीर्ष-स्तरीय प्रकार , जो अन्य प्रकारों में नेस्टेड नहीं हैं, केवल आंतरिक या सार्वजनिक पहुंच हो सकती है। इन प्रकार के लिए डिफ़ॉल्ट पहुंच-आंतरिक है

और नेस्टेड प्रकारों के लिए:

डिफ़ॉल्ट सदस्य पहुंच के सदस्य
---------- ----------------------------
सार्वजनिक रूप से
कक्षा निजी
इंटरफ़ेस सार्वजनिक
निजी संरचना

6
रीड की जानकारी से एक अच्छा संकलन, लेकिन आप यह निर्दिष्ट करना भूल गए कि इस तरह के एक्सेस मॉडिफायर तरीकों पर भी लागू होते हैं।
जोएल

4
@ जोल आपका क्या मतलब है? वह स्पष्ट रूप से "सदस्य" बताता है। सदस्य होने के नाते डेटा और व्यवहार और इस प्रकार तरीकों के समावेशी।
रास

यदि कोई vb.net डेवलपर इसे देख रहा है, तो vb अलग है। Vb वर्ग के सदस्यों के लिए डिफ़ॉल्ट गुंजाइश है PublicEnumसदस्य भी हैं Public। संभवतः आपके मामले में स्पष्ट दायरे का उपयोग करने के लिए कम भ्रमित होने के बाद से संभावना अधिक है, इसका अनुवाद किया जाएगा या किसी बिंदु पर सी # डेवलपर्स द्वारा पढ़ा जाएगा। Vb.net में कोड जनरेशन दुर्भाग्य से आपके लिए ऐसा नहीं करती है।
टोडरमो

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

13

MSDN से:

शीर्ष-स्तरीय प्रकार , जो अन्य प्रकारों में नेस्टेड नहीं हैं, केवल हो सकते हैं internalया publicपहुंच हो सकती है। इन प्रकारों के लिए डिफ़ॉल्ट पहुँच है internal


नेस्टेड प्रकार , जो अन्य प्रकार के सदस्य हैं, निम्न तालिका में संकेत के रूप में एक्सेसिबिलिटी घोषित कर सकते हैं।

डिफॉल्ट नेस्टेड मेंबर एक्सेसिबिलिटी और अलाउड एक्सेसिबिलिटी मोडिफायर्स

स्रोत: पहुँच क्षमता स्तर (सी # संदर्भ) (दिसंबर 6 वीं , 2017)


9

डिफ़ॉल्ट रूप से, एक वर्ग के लिए पहुँच संशोधक है internal। कहने का मतलब यह है कि एक ही विधानसभा में एक वर्ग सुलभ है। लेकिन अगर हम चाहते हैं कि वर्ग को अन्य विधानसभाओं से एक्सेस किया जाए तो इसे सार्वजनिक किया जाना चाहिए।


19
यह जानकारी पहले से ही अन्य उत्तरों में मौजूद थी। आपको केवल एक प्रश्न का उत्तर देना चाहिए, विशेष रूप से एक पुराना जैसे कि जब आपके पास प्रदान करने के लिए अतिरिक्त जानकारी हो या आपको लगता है कि अन्य उत्तर गलत हैं। वैसे भी, स्टैक ओवरफ्लो में आपका स्वागत है।
गोपुरिक

एक वर्ग को अन्य विधानसभाओं के लिए सुलभ बनाने के लिए जरूरी नहीं कि सार्वजनिक किया जाए। एक InternalsVisibleToAttribute कक्षा इस्तेमाल कर सकते हैं[assembly:InternalsVisibleTo("Friend1b")]
एडम

0

डिफ़ॉल्ट रूप से है private। जब तक वे नेस्टेड न हों, कक्षाएं होती हैं internal


1
डिफ़ॉल्ट रूप से सार्वजनिक नहीं हैं?
रयान पीटर्स

4
@ जय: जब तक वे नेस्टेड न हों। @ रेयान: नहीं, गैर-नेस्टेड एनम डिफ़ॉल्ट रूप से आंतरिक हैं।
जॉन स्कीट

2
@Ryan: Enum सदस्य डिफ़ॉल्ट रूप से सार्वजनिक होते हैं, लेकिन Enum स्वयं ही आंतरिक होता है।
रीड कोपसे

@ReedCopsey लेकिन मैं जिस किताब से सीख रहा हूं वह स्पष्ट रूप से कहती है enum members are private by default, so to use them outside the enum we should declare them as public। क्या आप बता सकते हैं कि पुस्तक आपके द्वारा कही गई बातों का खंडन क्यों करती है? धन्यवाद।

जो भी पुस्तक @ user5794376 (स्पष्ट रूप से हटाए गए खाते) पढ़ रही है, उसे सभी 1-स्टार समीक्षा दी जानी चाहिए यदि वे जो कहते हैं वह पुस्तक में सच है। यह केवल जानने के लिए Microsoft डॉक्स को देखता है कि enum सदस्य डिफ़ॉल्ट रूप से सार्वजनिक होते हैं और यही कारण है कि एनम के लिए केवल उन पर स्पष्ट नहीं होना आम बात है।
रोडनी एस। फोली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.