C#-ban mi az a (string[] args)?
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.
#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.
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:
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!
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!