2010-11-24 9 views
0

für Klarheit aktualisiert, hoffentlich ... Ja, ich frage mich, ob es irgendwelche Anwendungsfälle sindKonsole App Frage

Program p = new Program(); 

Ja ich Bezug auf die Programmklasse bin zu sagen, die mit kommt eine neue Konsolen App Vorlage.

In welchen Fällen möchten Sie die Program-Klasse in einer C# -Konsolen-App instanziieren?

+0

Dies ist eine sehr allgemeine Frage. Sie würden es instanziieren, wenn Sie einen Grund haben? Ich vermute? Gibt es eine bestimmte Sache, mit der Sie ein Problem haben? –

+0

könnten Sie einen Beispielcode posten, um zu klären, wonach Sie suchen? Wenn Sie "Programmklasse" sagen - meinen Sie das 'Klassenprogramm', das von der Standardkonsolenvorlage angezeigt wird? Und warum "console app" - da 'class Program' auch in der WinForms-Vorlage erscheint (okay, es erscheint als' static class Program', aber Sie können 'static' löschen und instanziieren, wenn Sie wollen). –

+0

Da die Program-Klasse standardmäßig auch in der WinForms App-Vorlage angezeigt wird, sind die Verweise auf "Console App" verwirrend. –

Antwort

3

Wenn Sie, sagen wir, mehrere Threads ausgeführt werden soll (wie in einer Service-App), die jeweils mit ihren eigenen Kopie Program, dann ist es sinnvoll, in der Lage sein:

Program p = new Program(); 

Main() wird automatisch nicht in diesen Fällen aufgerufen. So können Sie beispielsweise Service-Threads erstellen, wenn die App als Dienst ausgeführt wird, oder einen interaktiven Konsolencode innerhalb von main() ausführen, je nachdem, wie die App gestartet wurde. Dies ist sehr nützlich beim Debuggen von Diensten.

0

Wenn Sie keine GUI benötigen - wenn Sie keine Benutzereingabe benötigen. Oder Sie benötigen nur eine sehr einfache Benutzereingabe (zB ..... im Testcode).

Wenn Ihre App unbeaufsichtigt auf einem Server ausgeführt wird - warum haben Sie den Overhead eines nicht angezeigten Formulars?

+0

Sie müssen seine Frage näher lesen. Er fragt, warum Sie 'Programm p = neues Programm()' –

+0

gut tun sollten, er hat _say_ das nicht; Wenn Sie eine Konsolen-App ausführen, instanziieren Sie eine Programmklasse - sonst würde nichts passieren. Wenn Sie Recht haben, sollte er etwas in der Art von "Instanziieren zusätzlicher Programmklassen" gesagt haben. –

+0

@Michael: Eigentlich instanziieren Sie keine Klasse standardmäßig. Die Laufzeit ruft die Methode 'static void Main (string [])' für die Klasse 'Program' auf. Dies gilt sowohl für Konsolen- als auch für Fensteranwendungen. –

0

Wenn gute Benutzeroberfläche nicht etwas war, das Sie brauchten, aber Sie müssen immer noch etwas anzeigen.

Ich habe geschrieben Win-Forms-Anwendungen, die im Hintergrund ausgeführt werden konnte ... das ist ohne das Formular zu zeigen, Ausführen, dann endet.

Ein sehr guter Grund könnte sein, sicherzustellen, dass eine App ausgeführt werden kann, wenn keine GUI sein kann. Auf vielen Linux-Servern und Windows Core-Installationen sind GUI-Apps keine Option.

+0

Sie müssen seine Frage näher lesen. Er fragt, warum du 'Program p = new Program()' machen willst –