2010-06-24 22 views
39

नया कंसोल प्रोजेक्ट टेम्पलेट इस तरह की एक मुख्य विधि बनाता है:मुख्य विधि निजी क्यों है?

class Program 
{ 
    static void Main(string[] args) 
    { 
    } 
}

यह क्यों है कि न तो Main विधि और न ही Program कक्षा सार्वजनिक होने की आवश्यकता है?

+5

@jacerhea: नहीं 'कक्षा कार्यक्रम' आंतरिक है, 'मुख्य()' निजी है। –

+1

क्या "नया कंसोल प्रोजेक्ट टेम्पलेट" विजुअल स्टूडियो का संदर्भ है? यदि ऐसा है, तो 'दृश्य-स्टूडियो' टैग जोड़ना उचित होगा। – DavidRR

+1

@ डेविड आरआर हाँ, यह वीएस का संदर्भ है, लेकिन हालांकि यह सवाल के लिए अप्रासंगिक है। –

उत्तर

42

किसी प्रोग्राम का प्रवेश बिंदु .entrypoint आईएल निर्देश के साथ चिह्नित किया गया है। इससे कोई फर्क नहीं पड़ता कि विधि या वर्ग सार्वजनिक है या नहीं, यह सब मायने रखता है यह निर्देश है।

+10

इसका मतलब यह भी है कि आपको मुख्य विधि "मुख्य" भी कॉल नहीं करना है। सी # कंपाइलर उसको लागू करता है, लेकिन अन्य .net भाषाएं जो भी चाहें उसका उपयोग कर सकती हैं। –

17

Main विधि किसी को भी बुलाए जाने की आवश्यकता नहीं है।

इसे वास्तव में EXE में निष्पादन के लिए प्रवेश बिंदु के रूप में चिह्नित किया गया है, और इसलिए डिफ़ॉल्ट रूप से कोई बाहरी कॉलर नहीं है।

यदि आप चाहते हैं, तो आप public को चिह्नित करके इसे कॉल करने के लिए खोल सकते हैं, उदा। यदि आप एक एपीआई में कंसोल ऐप बदल रहे हैं।

+1

भले ही कंसोल प्रोग्राम की कार्यक्षमता अन्य असेंबली द्वारा कॉल करने योग्य हो, फिर भी 'मुख्य' खोलना अक्सर बुरा विचार होता है। बाहरी कार्यक्रमों को कॉल करने वाले सार्वजनिक फेकाडे का पर्दाफाश करना बेहतर डिजाइन है। 'मेन' ​​कमांड लाइन तर्कों को संभालता है और फिर उसी फेकाडे में कॉल करता है। –

+1

@ एंडर्स: उचित बिंदु, लेकिन हम केवल व्यवहार्यता के बारे में बात कर रहे हैं, डिजाइन नहीं। –

0

सार्वजनिक या निजी कीवर्ड इस मामले में कोई फर्क नहीं पड़ता है, यह पूरी तरह से आवेदन के उपयोग और दायरे पर निर्भर करता है। विभिन्न परिदृश्यों में नीचे उल्लिखित कीवर्ड का प्रयोग करें ..

1) सार्वजनिक- यदि हम किसी भी बाहरी कार्यक्रम द्वारा प्रवेश बिंदु शुरू करना चाहते हैं, तो आपको इसे सार्वजनिक करने की आवश्यकता हो सकती है ताकि यह पहुंच योग्य हो। 2) निजी- अगर हम जानते हैं कि आवेदन के लिए कोई बाहरी उपयोग नहीं है तो इसे निजी बनाना बेहतर है ताकि कोई बाहरी एप्लिकेशन इसे एक्सेस न कर सके।

संबंधित मुद्दे