Kezdőoldal » Számítástechnika » Programozás » C#-ban mi az a (string[] args)?

C#-ban mi az a (string[] args)?

Figyelt kérdés
A főprogram első soránál mindig ott van, és alul a fordító mindig ki is ír egy üzenetet, hogy Remove unused parameter 'args'. Tudom, hogy ez a program futását hátrányosan nem befolyásolja (tökéletesen működik), de mit jelent az ott, miért van ott, és hogy lehetne "használni" ezt a string[] args paramétert?
2019. nov. 22. 14:56
 1/5 A kérdező kommentje:
Lekérdeztem az args.Length-et, ezek szerint ez egy teljesen üres, nulla elemű string tömb. De minek van ott, minek létezik, és milyen esetben kell ezt tényleg "használni"?
2019. nov. 22. 15:00
 2/5 anonim ***** válasza:
27%

A .NET az egy ee fájlt generál neked.

Azt az exe-t parancssorból futtathatod, és adhatsz meg neki parancssori kapcsolókat/paramétereket.

Például: programom.exe -eletkor 34

Ekkor a main paraméterként megkapja stringenként.

args[0] mindig a program neve konvenció szerint (azaz "programom.exe"

args[1] = "-eletkor"

args[2] = "34"

Ezekkel a bemenetekkel aztán dolgozhatsz a programban.

2019. nov. 22. 15:28
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
77%

#1 vagyok, javítok pár hibát.

Először is elírtam, exe fájl lesz

A másik pedig, ha üres az args, akkor .NET esetén a program nevét nem teszi argumentumnak. C nyelvben például emlékszem hogy az van ott, ezért gondoltam, hogy itt is.

2019. nov. 22. 15:29
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
81%
A parancssori paramétereket tartalmazza, ha voltak.
2019. nov. 22. 16:29
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
100%

Ez azokból az időkből maradt ránk, amikor még nem ilyen fancy grafikus felületük volt az operációs rendszereknek, hanem ilyen unalmas fekete:

[link]


Ilyet ma is tudsz csinálni, csak írd be a Start menü keresőjébe, hogy "parancssor" (persze idézőjelek nélkül).

Ezekben az időkben azt csinálták, hogy begépelt parancsokkal irányították a számítógépet ahelyett, hogy értelmes ember módjára egeret használtak volna. Szóval ha volt egy játékod, amit el akartál indítani, az nagyjából úgy nézett ki, hogy:

1) Elnavigáltál a mappába, ahol a játékod volt:

C:\> cd games

C:\games\> cd snake

C:\games\snake\>

Pro tip: mint láthatod, a > jel előtt azt látod, hogy éppen melyik könyvtárban vagy - ezt nevezzük working directory-nak, vagy magyarul aktuális könyvtárnak vagy munkakönyvtárnak.

2) Elindítottad a játékot:

C:\games\snake\> snake.exe


Persze használhatsz abszolút elérési útvonalat is, vagyis így is elindíthatod:

C:\> C:\games\snake\snake.exe


Na de mi van akkor, ha van egy szöveges fájlod, amit szerkeszteni akarsz? Az csak egy dolog, hogy el tudod indítani a szövegszerkesztőt, de hogy mondod meg neki, hogy melyik fájlt akarod szerkeszteni? Nos, itt jön képbe az úgynevezett parancssori argumentum, ami neked C#-ban ez a "string[] args" dolog lesz.

C:\docs\> C:\textedit\editor.exe szoveg.txt


Mint azt láthatod, a kiadott parancs elemeit szóköz választja el egymástól - vagyis a futtatandó program a C:\textedit\editor.exe, a szerkesztendő fájl neve a szoveg.txt (a C:\docs mappában, ami a working directory).

Ha ezt az editor.exe-t C#-ban írtuk, akkor a "szoveg.txt" string-et az args tömbből kapjuk meg, vagyis valahogy így:

public static void Main(string[] args) {

.. if (args.GetLength(0) == 1)

.. .. LoadTextFile(args[0]);

}


Egy egyszerű program, ami összead két számot (amit parancssori argumentumként kap meg), így nézhet ki:

public static void Main(string[] args) {

.. //a példa egyszerűsége kedvéért lusta módon kihagyjuk az ellenőrzéseket

.. int a = Convert.ToInt32(args[0]); //nem felejtjük el, hogy string-ek vannak nekünk, így előbb számmá kell alakítani

.. int b = Convert.ToInt32(args[1]);


.. Console.WriteLine(a+b);

}


Na, de elég az 1970-es évekből, 2019-et írunk. De ez a technika a mai napig megvan. Ha ugyanis le akarsz játszani egy zenét, akkor duplaklikkel elindítod az MP3 fájlt. Nos, a rendszerben van egy adatbázis, ami azt tárolja, hogy melyik kiterjesztésű fájlt melyik programmal kell megnyitni. Ezt az adatbázist Windows alatt a registry-ben találod, HKEY_CLASSES_ROOT kulcs alatt, de ez most lényegtelen. Amit az operációs rendszer csinálni fog, az az, hogy kikeresi ebből az adatbázisból, hogy az MP3 fájlokhoz melyik program van hozzárendelve (mondjuk a VLC Media Player), és kiadja ezt a parancsot:

C:\Program Files\VLC\vlc.exe D:\Zenék\valami.mp3

Szóval a módszer maradt ugyanaz, mint amit 1970-ben a szöveges fájlokkal csináltak, csak itt most el van rejtve előled.


Ha ki akarod próbálni, megteheted így:

1) Írj egy programot, ami szöveges fájlokat fog megjeleníteni:

public static void Main(string[] args) {

.. //megint lusta vagyok ellenőrzést írni

.. Console.WriteLine(File.ReadAllText(args[0]));

.. Console.ReadLine();

}

2) Fordítsd le, és jegyezd meg, hogy hol találod az EXE fájlodat.

3) Keress egy TXT fájlt, jobbklikk rá, Társítás, és válaszd ki, hogy a rendszer a TXT fájlokat a te programoddal nyissa meg.

4) Duplaklikkel elindítod a TXT fájlt - és figyeld a mágiát, hogy a te programod nyitotta meg!

2019. nov. 23. 22:19
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!