C# - Konzol alkalmazások készítése

forráskód letöltése
A Visual Studio.NET-ben egyszerű lehetőségünk adódik arra is, hogy olyan alkalmazást készítsünk, mely nem rendelkezik grafikus felülettel, hanem csak egy DOS ablakban fut. Egy alkalmazást nyilván akkor célszerű így elkészítenünk, ha annak feladatához nem szükséges felhasználói beavatkozás, vagy csak minimális. Ilyen feladatoknál felesleges is lenne a grafikus felület.
Konzol alkalmazás készítéséhez válasszuk a File – New – Project menüpontot, majd a Visual C# Project elemből a Console Applicaiton-t.
A létrejövő programunk forráskódjában a Main függvénybe kell elhelyeznünk a feladatunkat megvalósítandó kódot. Mellékelt példában bekérünk két számot a felhasználótól, majd ezek összegét visszaírjuk a képernyőre.
Konzol alkalmazások készítésekor a Console osztály lesz segítségünkre. Ebben találunk egy Read függvényt, mely egyetlen karaktert olvas be a standard inputról. Ehhez hasonló a ReadLn, mely szintén olvas, de már egy egész sort, vagyis az Enter-ig. Mellékelt példában is ezt használjuk, mikor bekérünk egy számot a felhasználótól. Ekkor tetszőleges karakterek bevihetők egészen az Enter lenyomásáig.
A standard output-ra természetesen írhatunk is. Ehhez a Write, illetve WriteLn függvényeket használhatjuk. Mindkettőnek igen sok változata létezik. Ezek segítségével konverzió nélkül írhatunk szinte tetszőleges típusú adatot:
int a = 32;
Console.Write(a);
double b = 34.522;
Console.Write(b);
A Write és WriteLn között az a különbség, hogy a WriteLn egy „Enter-t” is tesz a sor végére.
Az In és Out mező tartalmazza az aktuális standard input-ot és output-ot. Ezt át is irányíthatjuk a SetIn, illetve SetOut függvények hívásával. Paraméterként egy TextReader, illetve egy TextWriter objektumot, vagy egy ebből származó objektumot kell átadni. Így például egy állományba is átirányíthatjuk a kiírást a következőképpen:
TextWriter tmp = Console.Out;
FileStream fs = new FileStream("abc.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
Console.SetOut(sw);
Console.WriteLine("Ez a szöveg az abc.txt-be kerül kiírásra");
Console.SetOut(tmp);
Console.WriteLine("Ez a szöveg ismét a képernyőre kerül kiírásra");
sw.Close();