C# string[] args?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

du meinst sicherlich die Methode:

public void main(String[] args)

Der erste begriff ist der Zugriffsmodifikator:

Public bedeutet das die methode von anderen Klassen aus anderen namespaces sichtbar und aufrufbar ist.

es gibt auch noch Protected internal und private.

Private bedeutet nur die klasse sieht die methode.

interal ist glaube ich alle im namespace bzw. in der assembly. (bin mir hier nicht ganz sicher)

und Protected sind diese klasse und alle von ihr abgeleiteten klassen.

void ist der Rückgabe typ. void bedeutet in dem falle das die methode nichts zurück gibt. Hier könnte auch String oder Int oder eine klasse stehen. etc. Dann gibt die Methode eben das zurück. Oder eventuell null.

main ist der name der methode. dieser kann beliebig sein. Nur wird eben von der IDE der name main gewählt als erste einsprungsmethode nach dem starten der Applikation. (Hier beginnt quasi dein programm.)

das in den () sind die parameter der methode. Stehen nur die klammern da. Also (). Hat die methode keine parameter.

String[] ist ein Stringarray. args der name des arrays.

Da es der Einsprungspunkt in dein programm ist. Enthält dieses array eventuell parameter mit dem deine applikation aufgerufen wurde. Rufe ich die exe quasi mit den parametern: -test1 -test2 auf. Dann stehen -test1 und -test2 in diesem array drinnen.

Hier mal noch ein anderes beispiel einer methode:

private Int32 Sum(Int32 x, Int32 y){

  return x+y;
}

Diese methode heisst Sum. Gibt ein Integer zurück. Will 2 integer als Parameter. und ist nur in der klasse in der sie deklariert ist verfügbar. Im körper der methode addiert sie blos die beiden parameter und gibt das ergebnis zurück. (Deswegen heisstt die methode auch Sum.)

Hemo20 
Fragesteller
 16.04.2024, 17:05

Danke!

0
Von Experte Palladin007 bestätigt

Das bringt ausschließlich etwas in der Main-Methode - dort werden von der .NET Runtime die Kommandozeilenparameter übergeben, die Du eventuell beim Starten der Anwendung angibst.

Andere Methoden werden eventuell andere Parameter benötigen. Oder eben auch gar keine.

Hemo20 
Fragesteller
 16.04.2024, 16:55

Und was ist die „.NET Runtime“?

0
ohwehohach  16.04.2024, 16:57
@Hemo20

Die Ausführungsumgebung.

C#-Programme werden nicht zu direkt ausführbarem Byte-Code compiliert, sondern in die so genannte IL (Intermediate Language). Diese wird wiederum dann in Byte Code compiliert beim Ausführen des Prorgamms. Die EXE-Datei, die Du beim compilieren erhältst, lädt quasi erstmal den .NET JIT Compiler, der dann das Programm übersetzt und startet.

Ähnlich wie bei Python - nur dass Python halt überhaupt keine Kompilate erzeugt.

0
Hemo20 
Fragesteller
 16.04.2024, 16:57
@Palladin007

Also zählt das quasi die Zeit wie lange das Programm dauert?

void ist der Rückgabe wert oder? Also bei void ja keiner xD

0
ohwehohach  16.04.2024, 16:59
@Hemo20

Nein, das hat nichts mit Zeitzählung zu tun. Das ist wie bei Java: Das Programm wird erst zur Ausführungszeit übersetzt und von einer plattformunabhänigigen Runtime ausgeführt. So auch bei .NET. Das besteht ebenfalls aus Tools, die die Programme ausführen können sowie Bibliotheken mit Dingen, die Du verwenden kannst (das .NET Framework).

void ist der Wert für "Kein Rückgabewert". Die Syntax für Methodendeklarationen ist:

[Optionaler Sichtbarkeitsmodifier] <Rückgabetyp> <Methodenname>([Optionale Parameterliste]) {
  Codeblock
}
0
ohwehohach  16.04.2024, 17:02
@ohwehohach

Das ist etwa vergleichbar mit einem Python Envrionment. Dort hast Duch auch den Interpreter und installierte Module. Um das Programm zu starten, startest Du den Interpreter und verwendest in Deinem Code die Module.

So ist das hier auch - nur dass der "Interpreter" automatisch gestartet wird, wenn Du die EXE-Datei ausführst.

0
ohwehohach  16.04.2024, 17:03
@Hemo20
Aber warum genau / string[ ] args

Weil es ein Array von strings ist. Es können ja mehrere Argumente übergeben werden. Und "args" ist ein beliebiger Variablenname. Du kannst da auch "bratwurst" hinschreiben. Ist völlig egal.

Parameter auf der Kommandozeile werden durch Leerzeichen getrennt. Wenn Du Dein Programm also startest mit

test.exe Hallo Welt

bekommst Du entsprechend eine Liste mit "Hallo" und "Welt".

0
Palladin007  16.04.2024, 17:04
@Hemo20
Also zählt das quasi die Zeit wie lange das Programm dauert?

Nein, das was ich geschrieben habe: Die Runtime ist das, was dein Programm ausführt.

Die exe-Datei startet die Runtime und gibt die Information mit, welcher Code ausgeführt werden soll.

Die Runtime *ist* also das Programm, sie liest das, was der Compiler aus deinem Code macht und führt es anschließend aus.

Ohne Runtime ist das, was der Compiler aus deinem Code macht, nur ziemlich komplizierter Datenmüll.

void ist der Rückgabe wert oder? Also bei void ja keiner xD

Ja. Dort steht der Rückghabewert oder void, wenn es keinen gibt. Die Main-Methode erlaubt neben void nur noch int, um Fehlercodes zurückgeben zu können.

Aber bedenke: Wenn Du auf dem Level weiter fragst, wirst Du in 100 Jahren noch Anfänger sein ;)

Greif dir lieber ein gutes Buch oder die Tutorial-Reihe in der MSDN-Doku, da hast Du schneller und mehr von.

Und nutze Suchmaschinen. Was die .NET Runtime ist, wurde schon zig Tausende Male erklärt.

1
Hemo20 
Fragesteller
 16.04.2024, 17:08
@Palladin007

Danke! Sry im Internet ist das schonmal komisch erklärt.

0

Wenn eine Methode das Schema methode(string[] args) als Kopf hat, dann erwartet die Methode eine Liste (Array) von Strings, also Zeichenketten.

void Main(string[] args) ist die Methode in der dein Programm beginnt. In der main Methode hat das die besondere Bedeutung, dass die Liste die ggf beim Aufruf des Programms übergebenen Parameter enthält.

Woher ich das weiß:Berufserfahrung – Software Entwickler