Sök…


Om-annat uttalande

Programmering i allmänhet kräver ofta ett decision eller en branch inom koden för att redovisa hur koden fungerar under olika ingångar eller villkor. Inom C # -programmeringsspråket (och de flesta programmeringsspråk för den här saken) är det enklaste och ibland det mest användbara sättet att skapa en gren inom ditt program genom ett If-Else uttalande.

Låt oss anta att vi har en metod (aka en funktion) som tar en int-parameter som representerar en poäng upp till 100, och metoden kommer att skriva ut ett meddelande som säger om vi passerar eller misslyckas.

static void PrintPassOrFail(int score)
{
    if (score >= 50) // If score is greater or equal to 50
    {
        Console.WriteLine("Pass!");
    }
    else // If score is not greater or equal to 50
    {
        Console.WriteLine("Fail!");
    }
}

När du tittar på den här metoden kanske du märker den här kodraden ( score >= 50 ) i If uttalandet. Detta kan ses som ett boolean tillstånd, där om villkoret utvärderas till lika true , då är koden som ligger i mellan if { } körs.

Till exempel, om den här metoden kallades så här: PrintPassOrFail(60); , utgången från metoden skulle vara en konsolutskrift som säger Pass! eftersom parametervärdet 60 är större eller lika med 50.

Men om metoden kallades så: PrintPassOrFail(30); , skulle metodens utskrift skriva ut och säga misslyckas! . Detta beror på att värdet 30 inte är större eller lika med 50, så att koden mellan det else { } körs istället för If uttalandet.

I det här exemplet har vi sagt att poängen ska gå upp till 100, vilket inte alls har redovisats. För att ta hänsyn till poäng som inte går över 100 eller eventuellt sjunker under 0, se exempel om ifall annat om annat.

Om-annat-om-annat-uttalande

I fortsättningen från exemplet If-Else Statement är det nu dags att införa Else If uttalandet. Else If uttalandet följer direkt efter If uttalandet i If-Else If-Else- strukturen, men har i sig en liknande syntax som If uttalandet. Det används för att lägga till fler grenar i koden än vad ett enkelt If-Else- uttalande kan.

I exemplet från If-Else-uttalandet specificerade exemplet att poängen går upp till 100; men det gjordes aldrig några kontroller mot detta. För att fixa detta låter vi ändra metoden från If-Else-uttalande så att den ser ut så här:

static void PrintPassOrFail(int score)
{
    if (score > 100) // If score is greater than 100
    {
        Console.WriteLine("Error: score is greater than 100!");
    }
    else if (score < 0) // Else If score is less than 0
    {
        Console.WriteLine("Error: score is less than 0!");
    }
    else if (score >= 50) // Else if score is greater or equal to 50
    {
        Console.WriteLine("Pass!");
    }
    else // If none above, then score must be between 0 and 49
    {
        Console.WriteLine("Fail!");
    }
}

Alla dessa uttalanden kommer att köras i ordning uppifrån hela vägen till botten tills ett villkor har uppfyllts. I denna nya uppdatering av metoden har vi lagt till två nya grenar för att nu rymma för poängen som går utanför gränserna .

Till exempel om vi nu kallade metoden i vår kod som PrintPassOFail(110); , utgången skulle vara en konsolutskrift som säger Fel: poängen är större än 100! ; och om vi kallade metoden i vår kod som PrintPassOrFail(-20); , skulle utgången säga Fel: poängen är mindre än 0! .

Byt uttalanden

En switch-uttalande gör det möjligt att testa en variabel för jämlikhet mot en lista med värden. Varje värde kallas ett fall och variabeln som slås på kontrolleras för varje switchfall.

Ett switch uttalande är ofta mer kortfattat och förståeligt än if...else if... else.. uttalanden när man testar flera möjliga värden för en enda variabel.

Syntax är som följer

switch(expression) {
   case constant-expression:
      statement(s);
      break;
   case constant-expression:
      statement(s);
      break;
  
   // you can have any number of case statements
   default : // Optional
      statement(s);
      break;
}

Det finns flera saker som måste beaktas när du använder switch-uttalandet

  • Uttrycket som används i en switch-sats måste ha en integrerad eller uppräknad typ, eller vara av en klasstyp där klassen har en enda konverteringsfunktion till en integrerad eller uppräknad typ.
  • Du kan ha valfritt antal ärenden i en switch. Varje fall följs av värdet som ska jämföras med och en kolon. Värdena att jämföra måste vara unika i varje switch-uttalande.
  • Ett switch-uttalande kan ha ett valfritt standardfall. Standardfallet kan användas för att utföra en uppgift när inget av fallen är sant.
  • Varje fall måste avslutas med en break uttalande om det inte är ett tomt uttalande. I så fall fortsätter exekveringen i fallet under det. Avbrottsuttalandet kan också utelämnas när ett uttalande om return , throw eller goto case används.

Exempel kan ges med klasserna klokt

char grade = 'B';

switch (grade)
{
    case 'A':
        Console.WriteLine("Excellent!");
        break;
    case 'B':
    case 'C':
        Console.WriteLine("Well done");
        break;
    case 'D':
        Console.WriteLine("You passed");
        break;
    case 'F':
        Console.WriteLine("Better try again");
        break;
    default:
        Console.WriteLine("Invalid grade");
        break;
}

Om uttalandevillkor är vanliga booleska uttryck och värden

Följande uttalande

if (conditionA && conditionB && conditionC) //...

är exakt motsvarande

bool conditions = conditionA && conditionB && conditionC;
if (conditions) // ...

med andra ord, förhållandena i "if" -uttalandet utgör bara ett vanligt booleskt uttryck.

Ett vanligt misstag när man skriver villkorade uttalanden är att uttryckligen jämföra med true och false :

if (conditionA == true && conditionB == false && conditionC == true) // ...

Detta kan skrivas om som

if (conditionA && !conditionB && conditionC)


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow