Megosztás a következőn keresztül:


Utasítások (C# programozási útmutató)

A program által végrehajtott műveletek utasításokban vannak kifejezve. A gyakori műveletek közé tartozik a változók deklarálása, az értékek hozzárendelése, a metódusok meghívása, a gyűjteményeken keresztüli hurkok, valamint az elágaztatás egy vagy több kódblokkhoz egy adott feltételtől függően. A programokban az utasítások végrehajtásának sorrendjét vezérlő vagy végrehajtási folyamatnak nevezzük. A vezérlés folyamata minden alkalommal változhat, amikor egy program fut, attól függően, hogy a program hogyan reagál a futási időben kapott bemenetre.

Az utasítás egy kódsorból állhat, amely pontosvesszővel végződik, vagy egy blokk egysoros utasítássorozatából. Az utasításblokk szögletes zárójelek közé {} van zárva, és beágyazott blokkokat tartalmazhat. Az alábbi kód két egysoros utasítást és egy többsoros utasításblokkot mutat be:

    public static void Main()
    {
        // Declaration statement.
        int counter;

        // Assignment statement.
        counter = 1;

        // Error! This is an expression, not an expression statement.
        // counter + 1;

        // Declaration statements with initializers are functionally
        // equivalent to  declaration statement followed by assignment statement:
        int[] radii = [15, 32, 108, 74, 9]; // Declare and initialize an array.
        const double pi = 3.14159; // Declare and initialize  constant.

        // foreach statement block that contains multiple statements.
        foreach (int radius in radii)
        {
            // Declaration statement with initializer.
            double circumference = pi * (2 * radius);

            // Expression statement (method invocation). A single-line
            // statement can span multiple text lines because line breaks
            // are treated as white space, which is ignored by the compiler.
            System.Console.WriteLine("Radius of circle #{0} is {1}. Circumference = {2:N2}",
                                    counter, radius, circumference);

            // Expression statement (postfix increment).
            counter++;
        } // End of foreach statement block
    } // End of Main method body.
} // End of SimpleStatements class.
/*
   Output:
    Radius of circle #1 = 15. Circumference = 94.25
    Radius of circle #2 = 32. Circumference = 201.06
    Radius of circle #3 = 108. Circumference = 678.58
    Radius of circle #4 = 74. Circumference = 464.96
    Radius of circle #5 = 9. Circumference = 56.55
*/

Utasítások típusai

Az alábbi táblázat felsorolja a C# különböző típusú utasításait és a hozzájuk tartozó kulcsszavakat, és további információkat tartalmazó témakörökre mutató hivatkozásokat tartalmaz:

Kategória C# kulcsszavak / jegyzetek
Deklarációs utasítások A deklarációs utasítás új változót vagy állandót vezet be. A változódeklaráció opcionálisan hozzárendelhet egy értéket a változóhoz. Állandó deklaráció esetén a hozzárendelés szükséges.
Kifejezési utasítások Az értéket kiszámító kifejezési utasításoknak egy változóban kell tárolniuk az értéket.
Kijelölési utasítások A kijelölési utasítások lehetővé teszik, hogy egy vagy több megadott feltételtől függően különböző kódszakaszokra ágazhasson. További információkért tekintse meg a következő témaköröket:
Iterációs utasítások Az iterációs utasítások lehetővé teszik a gyűjtemények( például tömbök) ciklusát, vagy ugyanazt az utasításkészletet ismétlődően hajthatja végre, amíg egy adott feltétel teljesül. További információkért tekintse meg a következő témaköröket:
Ugrási utasítások Az ugróutasítások átviszik a vezérlést a kód egy másik szakaszára. További információkért tekintse meg a következő témaköröket:
Kivételkezelési utasítások A kivételkezelési utasítások lehetővé teszik, hogy zökkenőmentesen helyreálljon a futtatáskor előforduló kivételes feltételekből. További információkért tekintse meg a következő témaköröket:
checked és unchecked Az checked és unchecked az utasítások lehetővé teszik annak megadását, hogy az integrál típusú numerikus műveletek túlcsordulást okozhatnak-e, ha az eredmény olyan változóban van tárolva, amely túl kicsi az eredményhez.
Az await utasítás Ha az aszinkron módosítóval jelöl meg egy metódust, használhatja a vár operátort a metódusban. Amikor a vezérlőelem egy kifejezést ér el await az aszinkron metódusban, a vezérlő visszatér a hívóhoz, és a metódus előrehaladása fel van függesztve, amíg a várt feladat be nem fejeződik. Ha a feladat befejeződött, a végrehajtás folytatódhat a metódusban.

Egy egyszerű példaért tekintse meg a Metódusok aszinkron metódusok című szakaszát. További információ: Aszinkron programozás aszinkronnal és várakozással.
Az yield return utasítás Az iterátor egyéni iterációt hajt végre egy gyűjteményen, például egy listán vagy tömbön. Az iterátor a hozamvisszautasítással egyenként adja vissza az egyes elemeket. yield return Az utasítás elérésekor a kód aktuális helye meg lesz jegyezve. A végrehajtás akkor indul újra erről a helyről, amikor az iterátort a következő alkalommal hívják meg.

További információ: Iterators.
Az fixed utasítás A rögzített utasítás megakadályozza, hogy a szemétgyűjtő áthelyez egy mozgatható változót. További információ: javítva.
Az lock utasítás A zárolási utasítással egyszerre csak egy szálra korlátozhatja a kódblokkok elérését. További információ: zárolás.
Címkézett utasítások Megadhat egy utasítást egy címkével, majd a goto kulcsszóval ugorhat a címkézett utasításra. (Lásd a példát a következő sorban.)
Az üres utasítás Az üres utasítás egyetlen pontosvesszőből áll. Nem tesz semmit, és olyan helyeken használható, ahol utasításra van szükség, de nem kell műveletet végrehajtani.

Deklarációs utasítások

Az alábbi kód példákat mutat be a változó deklarációkra kezdeti hozzárendeléssel és anélkül, valamint egy állandó deklarációt a szükséges inicializálással.

// Variable declaration statements.
double area;
double radius = 2;

// Constant declaration statement.
const double pi = 3.14159;

Kifejezési utasítások

Az alábbi kód példákat mutat be a kifejezési utasításokra, beleértve a hozzárendelést, a hozzárendeléssel történő objektumlétrehozást és a metódushívást.

// Expression statement (assignment).
area = 3.14 * (radius * radius);

// Error. Not  statement because no assignment:
//circ * 2;

// Expression statement (method invocation).
System.Console.WriteLine();

// Expression statement (new object creation).
System.Collections.Generic.List<string> strings =
    new System.Collections.Generic.List<string>();

Az üres utasítás

Az alábbi példák egy üres utasítás két felhasználási módjait mutatják be:

void ProcessMessages()
{
    while (ProcessMessage())
        ; // Statement needed here.
}

void F()
{
    //...
    if (done) goto exit;
//...
exit:
    ; // Statement needed here.
}

Beágyazott utasítások

Egyes utasítások, például az iterációs utasítások, mindig egy beágyazott utasítással rendelkeznek, amely követi őket. Ez a beágyazott utasítás lehet egy utasítás vagy egy utasításblokk zárójelei közé {} zárt több utasítás. Az egysoros beágyazott utasítások is szögletes zárójelek közé {} helyezhetők, ahogy az alábbi példában is látható:

// Recommended style. Embedded statement in  block.
foreach (string s in System.IO.Directory.GetDirectories(
                        System.Environment.CurrentDirectory))
{
    System.Console.WriteLine(s);
}

// Not recommended.
foreach (string s in System.IO.Directory.GetDirectories(
                        System.Environment.CurrentDirectory))
    System.Console.WriteLine(s);

A zárójelek közé {} nem zárt beágyazott utasítás nem lehet deklarációs utasítás vagy címkézett utasítás. Ez a következő példában látható:

if(pointB == true)
    //Error CS1023:
    int radius = 5;

A hiba kijavításához helyezze a beágyazott utasítást blokkba:

if (b == true)
{
    // OK:
    System.DateTime d = System.DateTime.Now;
    System.Console.WriteLine(d.ToLongDateString());
}

Beágyazott utasításblokkok

Az utasításblokkok beágyazhatók a következő kódban látható módon:

foreach (string s in System.IO.Directory.GetDirectories(
    System.Environment.CurrentDirectory))
{
    if (s.StartsWith("CSharp"))
    {
        if (s.EndsWith("TempFolder"))
        {
            return s;
        }
    }
}
return "Not found.";

Nem elérhető utasítások

Ha a fordító megállapítja, hogy a vezérlési folyamat semmilyen körülmények között nem érhet el egy adott utasítást, a cs0162 figyelmeztetést fog eredményezni, ahogyan az a következő példában is látható:

// An over-simplified example of unreachable code.
const int val = 5;
if (val < 4)
{
    System.Console.WriteLine("I'll never write anything."); //CS0162
}

C# nyelvspecifikáció

További információkért tekintse meg a C#-nyelv specifikációjának Utasítások szakaszát.

Lásd még