Zoeken…


Indien-anders-verklaring

Programmering in het algemeen vereist vaak een decision of een branch binnen de code om te verklaren hoe de code werkt onder verschillende ingangen of omstandigheden. Binnen de C # programmeertaal (en de meeste programmeertalen hiervoor), is de eenvoudigste en soms de meest handige manier om een filiaal in uw programma te maken via een If-Else statement.

Laten we aannemen dat we een methode (ook bekend als een functie) hebben die een parameter int heeft die een score tot 100 vertegenwoordigt, en de methode zal een bericht afdrukken met de melding of we slagen of falen.

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!");
    }
}

Als u naar deze methode kijkt, ziet u deze coderegel ( score >= 50 ) in de If instructie. Dit kan worden gezien als een boolean voorwaarde, waarbij als de voorwaarde wordt geëvalueerd als gelijk true , de code tussen de if { } wordt uitgevoerd.

Als deze methode bijvoorbeeld zo wordt genoemd: PrintPassOrFail(60); , zou de output van de methode een Console Print zijn met de tekst Pass! omdat de parameterwaarde van 60 groter of gelijk is aan 50.

Als de methode echter werd genoemd: PrintPassOrFail(30); , zou de uitvoer van de methode worden afgedrukt met de melding Fail! . Dit komt omdat de waarde 30 niet groter is dan of gelijk is aan 50, dus de code tussen de else { } wordt uitgevoerd in plaats van de If instructie.

In dit voorbeeld hebben we gezegd dat de score zou moeten oplopen tot 100, wat helemaal niet is verantwoord. Raadpleeg het voorbeeld van de If-Else If-Else-verklaring om een score te behalen die niet boven de 100 komt of mogelijk onder 0 daalt.

If-Else If-Else Verklaring

In navolging van het voorbeeld van de If-Else-instructie , is het nu tijd om de Else If instructie in te voeren. De Else If instructie volgt direct op de If instructie in de If-Else If-Else- structuur, maar heeft intrinsiek een vergelijkbare syntaxis als de If instructie. Het wordt gebruikt om meer vertakkingen aan de code toe te voegen dan een eenvoudige If-Else- instructie.

In het voorbeeld uit de If-Else-verklaring gaf het voorbeeld aan dat de score tot 100 stijgt; hiertegen zijn echter nooit controles uitgevoerd. Om dit op te lossen, laten we de methode van If-Else Statement als volgt wijzigen:

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!");
    }
}

Al deze instructies worden van boven naar beneden uitgevoerd totdat aan een voorwaarde is voldaan. In deze nieuwe update van de methode hebben we twee nieuwe branches toegevoegd om de score nu te overschrijden .

Als we bijvoorbeeld de methode in onze code nu PrintPassOFail(110); , zou de uitvoer een console-afdruk zijn met de melding Fout: score is hoger dan 100! ; en als we de methode in onze code zoals PrintPassOrFail(-20); hebben aangeroepen PrintPassOrFail(-20); , zou de output zeggen Fout: score is minder dan 0! .

Schakel verklaringen uit

Met een schakelinstructie kan een variabele worden getest op gelijkheid met een zoeklijst. Elke waarde wordt een case genoemd en de variabele die wordt ingeschakeld, wordt voor elke switch-case gecontroleerd.

Een switch is vaak beknopter en begrijpelijker dan if...else if... else.. verklaringen bij het testen van meerdere mogelijke waarden voor een enkele variabele.

Syntaxis is als volgt

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;
}

er zijn verschillende dingen waarmee u rekening moet houden tijdens het gebruik van de schakeloptie

  • De uitdrukking die wordt gebruikt in een schakelopdracht moet een integraal of genummerd type hebben, of van een klassetype zijn waarin de klasse een enkele conversiefunctie heeft naar een integraal of genummerd type.
  • U kunt een willekeurig aantal case-statements hebben binnen een switch. Elk geval wordt gevolgd door de waarde waarmee moet worden vergeleken en een dubbele punt. De te vergelijken waarden moeten uniek zijn binnen elke schakelopdracht.
  • Een schakeloptie kan een optionele standaardcase hebben. De standaardcase kan worden gebruikt voor het uitvoeren van een taak wanneer geen van de cases waar is.
  • Elk geval moet eindigen met een break statement, tenzij het een lege statement is. In dat geval wordt de uitvoering voortgezet in het onderliggende geval. De break-instructie kan ook worden weggelaten wanneer een return , throw of goto case wordt gebruikt.

Een voorbeeld kan met de cijfers worden gegeven

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;
}

Als statement-voorwaarden standaard Booleaanse uitdrukkingen en waarden zijn

De volgende verklaring

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

is precies gelijk aan

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

met andere woorden, de voorwaarden in de "if" -instructie vormen gewoon een gewone Booleaanse uitdrukking.

Een veel voorkomende fout bij het schrijven van voorwaardelijke uitspraken is expliciet te vergelijken met true en false :

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

Dit kan worden herschreven als

if (conditionA && !conditionB && conditionC)


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow