C# Language
Villkorliga uttalanden
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 omreturn
,throw
ellergoto 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)