2010-06-24 24 views
39

Nuovo modello di progetto console crea un metodo Main come questo:Perché il metodo principale è privato?

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

Perché è che né il metodo né la classe MainProgram devono essere pubblici?

+5

@jacerhea: No. 'programma di classe 'è interno,' Main() 'è privato. –

+1

Il "Nuovo modello di progetto della console" è un riferimento a Visual Studio? In tal caso, sarebbe opportuno aggiungere il tag "visual-studio". – DavidRR

+1

@DavidRR Sì, è un riferimento a VS, ma è comunque irrilevante per la domanda. –

risposta

42

Il punto di ingresso di un programma è contrassegnato dalla direttiva IL .entrypoint. Non importa se il metodo o la classe sono pubblici o meno, tutto ciò che conta è questa direttiva.

+10

Ciò significa anche che non è necessario chiamare il metodo principale "Main". Il compilatore C# lo impone, ma altri linguaggi .net possono usare quello che vogliono. –

17

Il metodo Main non deve essere chiamato da nessuno.

In realtà è contrassegnato come punto di ingresso per l'esecuzione nel file EXE stesso e pertanto non dispone di chiamanti esterni per impostazione predefinita.

Se si WANT, è possibile aprirlo fino a essere chiamato contrassegnando public, ad es. se stai trasformando un'applicazione per console in un'API.

+1

Anche se la funzionalità del programma della console deve essere richiamabile direttamente da altri assembly, è spesso una cattiva idea aprire 'Main'. È meglio progettare di esporre una facciata pubblica che i programmi esterni possono chiamare. 'Main' gestisce gli argomenti della riga di comando e poi chiama nella stessa facciata. –

+1

@ Anders: Fair point, ma stiamo parlando solo di fattibilità, non di design. –

0

La parola chiave pubblica o privata non fa differenza in questo caso, dipende completamente dall'utilizzo e dall'ambito dell'applicazione. Utilizzare le parole chiave sotto indicate in diversi scenari.

1) Pubblico: se si desidera avviare il punto di ingresso da qualsiasi programma esterno, potrebbe essere necessario renderlo pubblico in modo che sia accessibile. 2) Privato: se sappiamo che non esiste un utilizzo esterno per l'applicazione, è meglio renderlo privato in modo che nessuna applicazione esterna acceda.

Problemi correlati