2010-06-24 11 views
39

Neue Konsole Projektvorlage erstellt eine Main-Methode wie folgt aus:Warum ist die Hauptmethode privat?

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

Warum ist, dass es weder die Main Methode noch die Program Klasse öffentlich sein müssen?

+5

@jaceroha: Nein. 'Klasse Program' ist intern,' Main() 'ist privat. –

+1

Ist "Neue Konsolenprojektvorlage" eine Referenz zu Visual Studio? In diesem Fall wäre es angebracht, das Tag "visual-studio" hinzuzufügen. – DavidRR

+1

@DavidRR Ja, es ist ein Verweis auf VS, aber es ist für die Frage nicht relevant. –

Antwort

42

Der Einstiegspunkt eines Programms ist mit der IL-Direktive .entrypoint gekennzeichnet. Es spielt keine Rolle, ob die Methode oder die Klasse öffentlich ist oder nicht, alles, was zählt, ist diese Richtlinie.

+10

Das bedeutet auch, dass Sie nicht einmal die Hauptmethode "Main" aufrufen müssen. Der C# -Compiler erzwingt dies, aber andere .net-Sprachen können verwenden, was sie wollen. –

17

Die Methode Main sollte von niemandem aufgerufen werden müssen.

Es ist eigentlich als Einstiegspunkt für die Ausführung in der EXE selbst markiert und hat daher standardmäßig keine externen Anrufer.

Wenn Sie WANT möchten, können Sie es öffnen, um durch Markierung public, z. wenn Sie eine Konsolen-App in eine API verwandeln.

+1

Auch wenn die Funktionalität des Konsolenprogramms direkt von anderen Baugruppen aufgerufen werden sollte, ist es oft eine schlechte Idee, 'Main' zu öffnen. Es ist besser, eine öffentliche Fassade freizulegen, die externe Programme aufrufen können. 'Main' behandelt Befehlszeilenargumente und ruft dann in dieselbe Facade auf. –

+1

@Anders: Fairer Punkt, aber wir sprechen nur über Machbarkeit, nicht über Design. –

0

Öffentliches oder privates Schlüsselwort spielt in diesem Fall keine Rolle, es hängt vollständig von der Verwendung und dem Umfang der Anwendung ab. Verwenden Sie die unten genannten Schlüsselwörter in verschiedenen Szenarien.

1) Öffentlich - Wenn wir den Einstiegspunkt von einem beliebigen externen Programm initiieren möchten, müssen Sie ihn möglicherweise öffentlich machen, damit er zugänglich ist. 2) Privat - Wenn wir wissen, dass es keine externe Verwendung für die Anwendung gibt, ist es besser, sie privat zu machen, damit keine externe Anwendung darauf zugreifen kann.

Verwandte Themen