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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: