C# Language se, se ... altro, se ... altro se

Esempio


L'istruzione if viene utilizzata per controllare il flusso del programma. Un'istruzione if identifica quale istruzione eseguire in base al valore di un'espressione Boolean .

Per una singola istruzione, le braces {} sono facoltative ma consigliate.

int a = 4;
if(a % 2 == 0) 
{
     Console.WriteLine("a contains an even number");
}
// output: "a contains an even number"

L' if può anche avere una clausola else , che verrà eseguita nel caso in cui la condizione sia falsa:

int a = 5;
if(a % 2 == 0) 
{
     Console.WriteLine("a contains an even number");
}
else
{
     Console.WriteLine("a contains an odd number");
}
// output: "a contains an odd number"

Il if ... else if construct ti permette di specificare più condizioni:

int a = 9;
if(a % 2 == 0) 
{
     Console.WriteLine("a contains an even number");
}
else if(a % 3 == 0) 
{
     Console.WriteLine("a contains an odd number that is a multiple of 3"); 
}
else
{
     Console.WriteLine("a contains an odd number");
}
// output: "a contains an odd number that is a multiple of 3"

Importante notare che se una condizione è soddisfatta nell'esempio precedente, il controllo salta altri test e salta alla fine di quel particolare if else construct.So, l' ordine dei test è importante se si sta usando if .. else if construct

Le espressioni booleane C # utilizzano la valutazione di cortocircuito . Questo è importante nei casi in cui le condizioni di valutazione possono avere effetti collaterali:

if (someBooleanMethodWithSideEffects() && someOtherBooleanMethodWithSideEffects()) {
  //...
}

Non vi è alcuna garanzia che someOtherBooleanMethodWithSideEffects verrà effettivamente eseguito.

È anche importante nei casi in cui condizioni precedenti assicurano che è "sicuro" valutare quelli successivi. Per esempio:

if (someCollection != null && someCollection.Count > 0) {
   // ..
}

L'ordine è molto importante in questo caso perché, se invertiamo l'ordine:

if (someCollection.Count > 0 && someCollection != null) {

getterà una NullReferenceException se someCollection è null .