Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Kijelölési utasítások –
A if, if-else és switch az utasítások számos lehetséges útvonalból kiválasztják a végrehajtandó utasításokat egy kifejezés értéke alapján. Az if utasítás csak akkor hajt végre utasítást, ha egy megadott logikai kifejezés kiértékeli a következőt true: . Az if-else utasítással kiválaszthatja, hogy a két kódútvonal közül melyiket kövesse logikai kifejezés alapján. Az switch utasítás kiválaszt egy utasításlistát, amely egy kifejezéssel egyező minta alapján hajtandó végre.
A if utasítás
Az if utasítás a következő két űrlap bármelyike lehet:
Egy
ifrészből állóelseutasítás a logikai kifejezés értéke alapján végrehajtandó két utasítás egyikét választja ki, ahogyan az alábbi példa is mutatja:DisplayWeatherReport(15.0); // Output: Cold. DisplayWeatherReport(24.0); // Output: Perfect! void DisplayWeatherReport(double tempInCelsius) { if (tempInCelsius < 20.0) { Console.WriteLine("Cold."); } else { Console.WriteLine("Perfect!"); } }Egy
ifrész nélkülielseutasítás csak akkor hajtja végre a törzsét, ha egy logikai kifejezés kiértékeli azttrue, ahogy az alábbi példa mutatja:DisplayMeasurement(45); // Output: The measurement value is 45 DisplayMeasurement(-3); // Output: Warning: not acceptable value! The measurement value is -3 void DisplayMeasurement(double value) { if (value < 0 || value > 100) { Console.Write("Warning: not acceptable value! "); } Console.WriteLine($"The measurement value is {value}"); }
Az utasításokat több feltétel ellenőrzéséhez is beágyazhatja if , ahogy az alábbi példa is mutatja:
DisplayCharacter('f'); // Output: A lowercase letter: f
DisplayCharacter('R'); // Output: An uppercase letter: R
DisplayCharacter('8'); // Output: A digit: 8
DisplayCharacter(','); // Output: Not alphanumeric character: ,
void DisplayCharacter(char ch)
{
if (char.IsUpper(ch))
{
Console.WriteLine($"An uppercase letter: {ch}");
}
else if (char.IsLower(ch))
{
Console.WriteLine($"A lowercase letter: {ch}");
}
else if (char.IsDigit(ch))
{
Console.WriteLine($"A digit: {ch}");
}
else
{
Console.WriteLine($"Not alphanumeric character: {ch}");
}
}
Kifejezéskörnyezetben a feltételes operátorral ?: kiértékelheti a két kifejezés egyikét egy logikai kifejezés értéke alapján.
A switch utasítás
Az switch utasítás kiválaszt egy utasításlistát, amely egy egyező kifejezéssel egyező minta alapján hajtandó végre, ahogy az alábbi példa is mutatja:
DisplayMeasurement(-4); // Output: Measured value is -4; too low.
DisplayMeasurement(5); // Output: Measured value is 5.
DisplayMeasurement(30); // Output: Measured value is 30; too high.
DisplayMeasurement(double.NaN); // Output: Failed measurement.
void DisplayMeasurement(double measurement)
{
switch (measurement)
{
case < 0.0:
Console.WriteLine($"Measured value is {measurement}; too low.");
break;
case > 15.0:
Console.WriteLine($"Measured value is {measurement}; too high.");
break;
case double.NaN:
Console.WriteLine("Failed measurement.");
break;
default:
Console.WriteLine($"Measured value is {measurement}.");
break;
}
}
Az előző példában az utasítás a switch következő mintákat használja:
- Relációs minta: egy kifejezés eredményének összehasonlítása állandóval.
- Állandó minta: annak tesztelése, hogy egy kifejezés eredménye megegyezik-e egy állandóval.
Fontos
Az utasítás által támogatott mintákról további információt a switchMinták című témakörben talál.
Az előző példa az esetet is szemlélteti default . Az default eset olyan utasításokat ad meg, amelyeket akkor kell végrehajtani, ha egy egyező kifejezés nem egyezik más esetmintával. Ha egy egyező kifejezés nem egyezik a kis- és nagybetűk mintájával, és nincs default eset, akkor a vezérlés egy switch utasításon keresztül történik.
Az switch utasítás végrehajtja az utasításlistát az első kapcsolószakaszban , amelynek a kis- és nagybetűmintája megegyezik egy egyező kifejezéssel, és amelynek esetőrzője , ha van ilyen, kiértékeli a következőt true: . Az switch utasítás a kis- és nagybetűket szöveges sorrendben értékeli felülről lefelé. A fordító hibát okoz, ha egy switch utasítás elérhetetlen esetet tartalmaz. Ez egy olyan eset, amelyet már kezel egy nagybetű, vagy amelynek mintáját lehetetlen egyezni.
Megjegyzés:
Az default eset bármely helyen megjeleníthető egy utasításban switch . A helyzetétől függetlenül a rendszer csak akkor értékeli ki az default esetet, ha az összes többi esetminta nem egyezik meg, vagy az goto default; utasítás végrehajtása az egyik kapcsolószakaszban történik.
Egy utasítás egy szakaszához több esetmintát switch is megadhat, ahogy az alábbi példa is mutatja:
DisplayMeasurement(-4); // Output: Measured value is -4; out of an acceptable range.
DisplayMeasurement(50); // Output: Measured value is 50.
DisplayMeasurement(132); // Output: Measured value is 132; out of an acceptable range.
void DisplayMeasurement(int measurement)
{
switch (measurement)
{
case < 0:
case > 100:
Console.WriteLine($"Measured value is {measurement}; out of an acceptable range.");
break;
default:
Console.WriteLine($"Measured value is {measurement}.");
break;
}
}
switch Egy utasításon belül a vezérlő nem tud átesni egyik kapcsolószakaszból a másikba. Ahogy az ebben a szakaszban látható példák is mutatják, általában az break egyes kapcsolószakaszok végén található utasítással adja át a vezérlőt egy switch utasításból. A visszatérési és dobási utasításokkal is átadhatja az utasítás irányítását switch . Az áteső viselkedés utánzásához és a vezérlő más kapcsolószakaszba való átviteléhez használhatja az utasítástgoto.
Fontos
Minden kapcsolószakasznak egy vagy több breakelemet gotoreturnkell tartalmaznia. Az egyik kapcsolószakaszról a másikra való váltás fordítóhibát okoz. Ugyanahhoz a kapcsolószakaszhoz azonban több kapcsolócímke is alkalmazható, például case < 0: a fenti példában. Ez a szándékos kialakítási választás lehetővé teszi több azonos vagy egymással összefüggő logikával egyező eset tömör kezelését.
A kifejezéskörnyezetben a switch kifejezéssel egyetlen kifejezést értékelhet ki a jelölt kifejezések listájából egy kifejezéssel egyező minta alapján.
Fontos
Különbségek a kapcsolókifejezés és a kapcsolóutasítás között:
- kapcsolóutasítással szabályozható a végrehajtási folyamat egy kódblokkon belül.
- a kapcsolókifejezést általában az értékvisszatérés és az érték-hozzárendelés kontextusában használják, gyakran kifejezésre alkalmas tagokként.
- a kapcsolókifejezések kis- és nagybetűinek szakasza nem lehet üres, egy kapcsolóutasítás is lehet.
Esetőr
Előfordulhat, hogy egy esetminta nem elég kifejező ahhoz, hogy meghatározza a kapcsolószakasz végrehajtásának feltételét. Ilyen esetben használhatja az esetőrt. Ez egy további feltétel, amelyet egy egyeztetett mintával együtt kell teljesíteni. Az esetőrnek logikai kifejezésnek kell lennie. A mintát követő kulcsszó után when egy esetőrt kell megadnia, ahogy az alábbi példa is mutatja:
DisplayMeasurements(3, 4); // Output: First measurement is 3, second measurement is 4.
DisplayMeasurements(5, 5); // Output: Both measurements are valid and equal to 5.
void DisplayMeasurements(int a, int b)
{
switch ((a, b))
{
case (> 0, > 0) when a == b:
Console.WriteLine($"Both measurements are valid and equal to {a}.");
break;
case (> 0, > 0):
Console.WriteLine($"First measurement is {a}, second measurement is {b}.");
break;
default:
Console.WriteLine("One or both measurements are not valid.");
break;
}
}
Az előző példa beágyazott relációs mintákkal rendelkező pozíciómintákat használ.
C# nyelvspecifikáció
További információt a C# nyelvspecifikációjának alábbi szakaszaiban talál:
A mintákról további információt a C# nyelv specifikációjánakMinták és mintaegyező szakaszában talál.