02. TANANYAG · FORRÁSKÓD

Hello World

02_HelloWorld_kommentelt.cs
02_HelloWorld_kommentelt.csAnimáció megnyitása →
namespace HelloWorld // A namespace (névtér) összefogja és elkülöníti az ide tartozó kódelemeket; a HelloWorld ennek a névtérnek a neve.
{ // A nyitó kapcsos zárójel jelzi, hogy itt kezdődik a HelloWorld névtérhez tartozó kódblokk.
    internal class Program // Az internal azt jelenti, hogy ez az osztály ezen a programon/assemblyn belül érhető el; a class új osztályt definiál, amelynek neve Program.
    { // Itt kezdődik a Program osztály törzse, vagyis minden, ami ehhez az osztályhoz tartozik.
        static void Main(string[] args) // A Main a program belépési pontja; a static miatt példány létrehozása nélkül fut, a void azt jelenti, hogy nem ad vissza értéket, a string[] args pedig a parancssori argumentumokat tartalmazó szövegtömb.
        { // Itt kezdődik a Main metódus kódblokkja; a program indulásakor az ebben lévő utasítások hajtódnak végre.
            Console.WriteLine("Hello, World!"); // A Console a konzollal való kommunikációra szolgáló osztály, a WriteLine kiírja a megadott "Hello, World!" szöveget, majd új sort kezd; a ; lezárja az utasítást.
            Console.ReadKey(); // A ReadKey megvárja, hogy a felhasználó lenyomjon egy billentyűt; így például a konzolablak nem záródik be azonnal. A ; itt is az utasítás végét jelzi.
        } // Ez a záró kapcsos zárójel lezárja a Main metódus kódblokkját.
    } // Ez a záró kapcsos zárójel lezárja a Program osztály törzsét.
} // Ez az utolsó záró kapcsos zárójel lezárja a HelloWorld névteret.

/*
 * internal class Program
 * ----------------------
 *
 * Ez a sor egy Program nevű osztályt hoz létre.
 *
 * A felépítése:
 *
 *     internal   class   Program
 *        ↓         ↓        ↓
 *   hozzáférés   típus    az osztály
 *   módosító     megadása    neve
 *
 * Az "internal" egy hozzáférési módosító (access modifier).
 * Azt mondja meg, hogy honnan lehet elérni az adott osztályt.
 * Az internal jelentése: az osztály az adott assemblyn, vagyis leegyszerűsítve
 * az adott lefordított programon/projekten belül használható.
 *
 * A "class" kulcsszó azt jelzi a C# fordítónak, hogy egy osztályt definiálunk.
 * Az osztály egy olyan egység, amely adatokat és az azokkal dolgozó
 * metódusokat foghat össze.
 *
 * A "Program" egyszerűen az osztály neve.
 * Ezt a nevet mi adjuk meg, tehát lehetne például:
 *
 *     internal class Auto
 *     internal class Diak
 *     internal class Szamologep
 *
 * Az osztályhoz tartozó tartalom a név után következő { } kapcsos
 * zárójelek között helyezkedik el:
 *
 *     internal class Auto
 *     {
 *         // Az Auto osztályhoz tartozó kód kerül ide.
 *     }
 *
 * Általánosan tehát egy osztály deklarációja például így képzelhető el:
 *
 *     [hozzáférési módosító] class [osztály neve]
 *
 * Például:
 *
 *     public class Ember
 *     {
 *     }
 *
 * A "public" az internalhoz hasonlóan hozzáférési módosító, de azt jelenti,
 * hogy az osztály más assemblykből/projektekből is elérhető lehet.
 */


/*
 * static void Main(string[] args)
 * -------------------------------
 *
 * Ez egy Main nevű metódus deklarációja. Konzolos C# programoknál
 * a Main hagyományosan a program belépési pontja: innen indul
 * a saját programkódunk végrehajtása.
 *
 * A felépítése:
 *
 *     static   void   Main   (string[] args)
 *       ↓       ↓       ↓          ↓
 *   módosító  vissza-  metódus    paraméter
 *             térési    neve
 *              típus
 *
 * A "static" azt jelenti, hogy a Main metódus magához a Program
 * osztályhoz tartozik, és a meghívásához nem kell előtte létrehozni
 * egy Program típusú objektumot.
 *
 * A "void" a metódus visszatérési típusa.
 * A void jelentése: ez a metódus nem ad vissza értéket.
 *
 * Más metódus például visszaadhat egy egész számot:
 *
 *     static int Osszead(int a, int b)
 *     {
 *         return a + b;
 *     }
 *
 * Itt az "int" azt jelenti, hogy a metódus egy egész számot ad vissza.
 * A Main esetében a "void" miatt nincs ilyen visszaadott érték.
 *
 * A "Main" a metódus neve.
 * Ez itt különleges név, mert a C# futtatókörnyezet ezt használhatja
 * a program belépési pontjaként.
 *
 * A metódus neve után található ( ) zárójelben vannak a paraméterek:
 *
 *     string[] args
 *
 * Ez két részből áll:
 *
 *     string[]   args
 *        ↓        ↓
 *      típus     név
 *
 * A "string" szöveges adattípust jelent.
 * A [] azt jelenti, hogy nem egyetlen stringről, hanem stringek tömbjéről van szó.
 * Az "args" ennek a változónak a neve. Az "args" az "arguments"
 * (argumentumok) szó rövidítése.
 *
 * Ebben a tömbben kaphatja meg a program a parancssorból átadott adatokat.
 * Ha például a programot így indítanánk:
 *
 *     Program.exe alma körte
 *
 * akkor leegyszerűsítve:
 *
 *     args[0] -> "alma"
 *     args[1] -> "körte"
 *
 * A Main után következő { } kapcsos zárójelek között található maga
 * a metódus törzse, vagyis azok az utasítások, amelyeket végre akarunk hajtani:
 *
 *     static void Main(string[] args)
 *     {
 *         Console.WriteLine("Hello!");
 *         Console.WriteLine("Ez már a Main metódus törzse.");
 *     }
 *
 * Egy metódus deklarációjának általánosított formája például:
 *
 *     [módosító] [visszatérési típus] [metódus neve]([paraméterek])
 *
 * Például:
 *
 *     static int Negyzet(int szam)
 *     {
 *         return szam * szam;
 *     }
 *
 * Ebben:
 *     static  -> a metódus az osztályhoz tartozik
 *     int     -> egész számot ad vissza
 *     Negyzet -> a metódus neve
 *     int     -> a paraméter típusa
 *     szam    -> a paraméter neve
 */