c# - सी # में "निजी" कीवर्ड लिखने का कोई कारण?




5 Answers

AFAIK, निजी रूप से सी # में डिफ़ॉल्ट है (जिसका अर्थ है कि अगर मैं सार्वजनिक, संरक्षित, आंतरिक, आदि नहीं लिखता हूं तो यह डिफ़ॉल्ट रूप से निजी होगा)। (अगर गलत हो तो मुझे सही करें)।

यह सच नहीं है। नामस्थान (वर्ग, structs, इंटरफेस, आदि) के भीतर परिभाषित प्रकार डिफ़ॉल्ट रूप से आंतरिक होंगे। साथ ही, विभिन्न प्रकार के सदस्यों के पास अलग-अलग डिफ़ॉल्ट पहुंच-योग्यताएं होती हैं (जैसे कि इंटरफ़ेस सदस्यों के लिए सार्वजनिक)। विवरण के लिए, एमएसडीएन पर अभिगम्यता स्तर देखें।

इसके अलावा,

तो, उस कीवर्ड को लिखने का क्या कारण है, या यह भी क्यों मौजूद है?

यह स्पष्ट रूप से निर्दिष्ट करने से आपकी योजना को निजी, बहुत स्पष्ट रूप से बनाने के इरादे को दर्शाता है। यह समय के साथ आपके कोड की रखरखाव के साथ मदद करता है। यह अन्य डेवलपर्स (या स्वयं) के साथ यह जानने में मदद कर सकता है कि कोई सदस्य डिफ़ॉल्ट रूप से या उद्देश्य पर निजी है या नहीं।

जहां तक ​​मुझे पता है, private रूप से सी # में डिफ़ॉल्ट है (जिसका अर्थ है कि अगर मैं public , protected , internal , आदि नहीं लिखता हूं तो यह डिफ़ॉल्ट रूप से private होगा)। (अगर मैं गलत हूं कृपया मुझे सही।)

तो, उस कीवर्ड को लिखने का कारण क्या है, या यह सदस्यों के लिए भी क्यों मौजूद है?

उदाहरण के लिए, जब कोई इवेंट हैंडलर स्वतः उत्पन्न होता है तो ऐसा लगता है:

private void RatTrap_MouseEnter(object sender, CheeseEventArgs e)
{

}

लेकिन अगर यह निहित और डिफ़ॉल्ट है तो यह निजी क्यों लिखता है? बस इतना है कि नौसिखिया डेवलपर्स (जो नहीं जानते कि यह सी # डिफ़ॉल्ट है) जानते हैं कि यह निजी है? या कंपाइलर के लिए कोई अंतर है?

इसके अलावा, क्या ऐसा कोई मामला है जहां "निजी" (अकेला) लिखना सदस्य की पहुंच को बदल देगा ?




private दृश्य अव्यवस्था जोड़ता है। जो लोग जोर देते हैं कि यह चीजों को स्पष्ट करता है, मैं पूछूंगा: क्या आप इसे गणित के साथ भी करते हैं? उदाहरण के लिए:

var answer = a + b / c;

क्या आप b / c आस-पास अनावश्यक कोष्ठक के बिना अस्पष्ट पाते हैं?

सी # में नियम बहुत सरल है: डिफ़ॉल्ट रूप से, सबकुछ निजी के करीब जितना हो सकता है उतना ही हो सकता है। तो यदि आपको डिफ़ॉल्ट से अधिक दिखाई देने के लिए कुछ चाहिए, तो एक संशोधक जोड़ें। अन्यथा, अपने कोड में अनावश्यक कीवर्ड न जोड़ें।




पठनीयता, इरादे का प्रदर्शन दो महान कारण हैं जिनके बारे में मैं सोच सकता हूं।




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

एक और अच्छा कारण यह है कि FxCop आपको ऐसा करने के लिए कहता है।




मैं बाकी वर्ग के दायरे की पठनीयता के साथ स्थिरता के लिए कहूंगा।




Related

c# private specifications access-modifiers auto-generate