C# tarjoaa vakiomuotoiset ohjausvirtauksen rakenteet — ehdolliset lauseet (, ), silmukat (, , ) ja haarautuminen (, , ) — sekä modernit parannukset, kuten switch-lausekkeet ja kuvioiden vastaavuus, jotka tekevät koodista tiiviimmän.
ifswitchforforeachwhilebreakcontinuereturnif (score >= 90)
grade = "A";
else if (score >= 80)
grade = "B";
else
grade = "F";
// ternary and null-coalescing
string status = age >= 18 ? "adult" : "minor";
string name = input ?? "default"; // ?? — use default if input is null
name ??= "fallback"; // ??= assign if null
// traditional switch
switch (day)
{
case "Sat":
case "Sun":
type = "weekend";
break; // break required (no fall-through)
default:
type = "weekday";
break;
}
// switch EXPRESSION (C# 8) — concise, returns a value, with pattern matching
string type = day switch
{
"Sat" or "Sun" => "weekend",
_ => "weekday", // _ = default
};
// pattern matching in switch
string describe = obj switch
{
int n when n > 0 => "positive int",
string s => $"string of length {s.Length}",
null => "null",
_ => "other",
};
Moderni switch-lauseke on tiivis (palauttaa arvon, ei break-komentoa), ja tukee tehokasta kuvioiden vastaavuutta (tyyppien, ehtojen ja muiden vastaavuus) — merkittävä parannus perinteiseen, verboosiimiliiseen switch-lauseeseen verrattuna.
for (int i = 0; i < 10; i++) { }
foreach (var item in collection) { } // iterate any IEnumerable
while (condition) { }
do { } while (condition); // runs at least once
foreach (minkä tahansa IEnumerable-kohteen iterointi) on idiomaattinen silmukka kokoelmille.
foreach (var item in items)
{
if (item.Skip) continue; // next iteration
if (item.Stop) break; // exit loop
}
return result; // exit method
Ohjausvirtaus on perusmekanismi logiikan ilmaisemiselle jokaisessa ohjelmassa, joten C#:n rakenteiden ymmärtäminen on perustavanlaatuista jokapäiväistä tietoa.
Vaikka perusasiat ovat vakiomuotoisia, modernit C#-parannukset ovat syytä tuntea ja käyttää: switch-lauseke (C# 8+) on merkittävä parannus perinteiseen switch-lauseeseen verrattuna — tiivis, arvopalautteinen, ilman läpäisyvirheitä (ilman unohdettuja break-komentoja), ja kuvioiden vastaavuuden tukeminen (tyyppien, ehtojen, arvojen ja rakenteen vastaavuus) tekee monimutkaisista ehdollisista logiikasta paljon puhtaamman kuin sisäkkäisten if-else-ketjujen kanssa.
Null-yhdistelmäoperaattorit (??, ??=) tarjoavat puhtaan null-käsittelyn, ja foreach on idiomaattinen tapa kokoelmien iterointiin.
Näiden rakenteiden tuntemus ja modernien, ilmaisuvoimaisempien muotojen suosiminen (switch-lausekkeet kuvioiden vastaavuuden kanssa verboosin switch-lauseen sijaan, null-yhdistelmä oletusarvoille) on jokapäiväistä tietoa puhtaan, idiomaattisen C#:n kirjoittamiseksi.
Switch-lauseke ja kuvioiden vastaavuus heijastuvat erityisesti modernin C#:n kehittymistä kohti funktiomaisuutta ja tiiviyteen, mikä tekee niistä tärkeitä ymmärtää sekä paremman koodin kirjoittamisen että nykyisten C#-koodipohjien lukemisen kannalta, jotka käyttävät näitä ominaisuuksia laajasti.