Kurzusok
/
C#
C#
/
Tanterv
/
Switch utasítások
Sw

Switch utasítások ebben a kurzusban: C#

2 feladat

A(z) Switch utasítások fogalomról

A switch utasításoknak tekintélyes története van a programozási nyelvekben. A C nyelvben jelentek meg, ahol a sebességük miatt kedvelték őket. Ez a sebesség azonban a nagyon korlátozott funkcionalitás rovására ment. C#-ban a switch utasítás szerepe túlmutat az egész számokon: a switch utasítások bármilyen típusra, értékre vagy referenciára kiterjedhetnek.

Ha funkcionális nyelvből érkezel, akkor C#-ban a diszkriminált uniók és a mintaillesztés használatához a switch utasításokkal (és a máshol tárgyalt switch kifejezésekkel) végzett munka áll a legközelebb. A típusbiztonság kikényszerítésében azonban meg sem közelítik a diszkriminált uniók erejét.

Az egyszerű switch utasítások a C-s őseikre hasonlítanak, mert a switch, a case, a break és a default kombinációjából épülnek fel.

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

A fenti minta bármilyen egyszerű (primitív + string) típussal használható.

Ha referenciatípusok is szóba jönnek, akkor további szintaxisra van szükség: először a típus lefelé kasztolásához, majd őrök (when) hozzáadásához, bár őröket egyszerű értékek eseteihez is kapcsolhatsz. Ezt mutatja az alábbi példa:

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • A default ág elhagyható, de általában érdemes megadni.
  • A break utasítás kötelező minden nem üres case ágban.
  • Természetesen a case-címkék összes argumentumának típusát a switch argumentumának típusából kell származtatni. Egy Object típusú switch argumentum persze a legszélesebb kört engedi meg.
  • Az őrkifejezés bármit tartalmazhat, ami scope-ban van, nem csupán a case argumentum tagjait.
  • Több, különböző case argumentummal rendelkező case is ugyanarra a kódblokkra hivatkozhat.

A switch utasításról szóló dokumentáció bevezetést nyújt a switch utasításokba.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Switch utasítások fogalmat

A gyakorlás zárolva

Oldj fel még 6 feladatot, hogy gyakorolhasd a(z) Switch utasítások fogalmat