C # -Klasse ohne Hauptmethode

8

Ich lerne C # und bin sehr neu dazu, also verzeih mir die scheinbar dumme Frage. Ich habe einige Erfahrung in Java, und ich habe bemerkt, dass C # -Programme auch eine main() -Methode in ihrer Hauptklasse benötigen.

Was ist, wenn ich eine Klasse erstellen möchte, die keine Hauptklasse ist, d. h. eine, die ich in eine Hauptklasse importiere?

Ich habe versucht, das zu tun, und wenn ich kompiliere (über cmd mit csc File.cs ) sagt der Compiler, dass die .exe, die es macht, keine main() -Methode hat. Bedeutet das, dass ich falsch lag und jede Klasse eine main() -Methode benötigt, oder dass ich sie falsch kompiliere?

Vielleicht ist das Problem im Code (da ich mich auf meine Kenntnisse der Java-Syntax verlasse), die so aussieht:

%Vor%

BEARBEITEN: Ich fürchte, das ist schrecklich missverstanden. Ich frage nicht, ob die Datei eine Hauptmethode benötigt, ich frage, wie ich diese Klasse in eine andere Klasse importieren kann, weil mir klar ist, dass ich, wenn ich das tue, keine Hauptstelle haben kann (wie gesagt, ich habe einige Java-Erfahrung), aber wenn ich versuche, ohne einen zu kompilieren, sagt mir der Compiler, dass ich einen brauche.

    
Bluefire 04.02.2013, 14:25
quelle

9 Antworten

20


Nicht alle Klassen benötigen Main method.

Wie MSDN-Status

  

Die Main-Methode ist der Einstiegspunkt einer C # -Konsolenanwendung oder   Windows-Anwendung. (Bibliotheken und Dienste benötigen keinen Main   Methode als Einstiegspunkt.). Wenn die Anwendung gestartet wird, wird der Hauptbildschirm angezeigt   Methode ist die erste Methode, die aufgerufen wird.

     

Es kann nur einen Einstiegspunkt in einem C # -Programm geben. Wenn du mehr hast   als eine Klasse, die eine Main-Methode hat, müssen Sie Ihr Programm kompilieren   Mit der / main-Compiler-Option geben Sie an, welche Main-Methode verwendet werden soll   der Einstiegspunkt.

Nur eine Klasse muss die Methode Main beibehalten, die Klasse, die als Einstiegspunkt der Anwendung fungiert.

Die Signatur der Hauptmethode lautet: static void Main(string[] args) oder static void Main() oder static int Main(string[] args) oder static int Main()

Weitere Informationen finden Sie in diesem Link: Main() and Command-Line Arguments (C# Programming Guide )

Für Ihr Beispiel oben:

%Vor%

Wenn Sie diese Klasse verwenden müssen, können Sie eine statische Klasse mit der main-Methode erstellen:

%Vor%     
PaRiMaL RaJ 04.02.2013, 14:26
quelle
1

In diesem Szenario benötigen Sie mindestens eine Klasse in Ihrem Code mit der Methode Main . Die anderen Klassen benötigen nicht die Methode Main .

    
chue x 04.02.2013 14:27
quelle
0

static void main(string[] args) Methode in C # -Programmen ist der Startpunkt, der ausgeführt werden soll. Wenn Sie versuchen, eine einzelne C # -Datei zu kompilieren, findet der Compiler diese Methode, um die Ausführung zu starten. Sie müssen die Methode nicht in einer Klasse erstellen, die Sie als Modell verwenden, aber Sie müssen diese Methode für ein Konsolenprogramm, WinForms usw. verwenden.

    
Felipe Oriani 04.02.2013 14:27
quelle
0

C # Anwendung muss mindestens eine Klasse mit der Main-Methode haben, damit die Ausführung von ihr aus beginnen kann. Die Anwendung kann viele Klassen haben, aber nur eine Klasse mit nur einer Main-Methode ist erforderlich.

C # library muss keine Main-Methode haben.

    
Dialecticus 04.02.2013 14:30
quelle
0

Wenn es sich um eine Konsolenanwendung handelt, benötigen Sie zunächst eine Main-Methode. Andernfalls (z. B. Webanwendung) benötigen Sie keines.

    
Robert 04.02.2013 14:30
quelle
0

Versuchen Sie es mit /t:library switch mit dem Compiler. Standardmäßig versucht es ein .exe zu erstellen, das natürlich einen Einstiegspunkt benötigt (d. H. Eine main -Methode). Wenn Sie zu einem .dll kompilieren, brauchen Sie das nicht.

Aber wie HighCore vorgeschlagen hat, wenn Sie gerade lernen, verwenden Sie einfach Visual Studio (laden Sie eine der kostenlosen Versionen herunter, wenn Sie es nicht schon getan haben) und lassen Sie sich über die Compiler-Flags sorgen.

    
Matt Burland 04.02.2013 14:28
quelle
0

Sie benötigen nur eine main -Methode, wenn Sie eine ausführbare Assembly (.exe) erstellen, und Sie benötigen sie nur in einer Klasse. Diese Methode ist der Standard-Einstiegspunkt, an dem die Ausführung beginnt. Sie benötigen keine main -Methode, wenn Sie Ihren Code als Klassenbibliothek (.dll) erstellen.

    
Botz3000 04.02.2013 14:28
quelle
0

Nur eine Klasse mit einer Methode sollte in Ordnung sein. Wenn Sie möchten, können Sie das Start-up-Objekt in Visual Studio in den Einstellungen einrichten.

    
kittu 04.02.2013 15:36
quelle
0

C # class ohne Main () bedeutet, dass Sie es als eine Bibliothek (.dll) kompilieren können csc / target: Bibliothek YourClassFileName.cs oder csc / t: Bibliothek YourClassFileName.cs, um es als YourClassFileName.dll-Datei zu machen, und dann können Sie es in einer anderen Klassendatei mit der Main () -Methode (Einstiegspunkt) verwenden

csc /reference:IhrClassFileName.cs YourMainClassFileName.cs oder csc /r:YourClassFileName.cs YourMainClassFileName.cs

, um eine YourMainClassFileName.exe-Datei zu erstellen

    
Abdul Karim Siddiqui 25.07.2015 19:45
quelle

Tags und Links