Qual è l’output completo stampato eseguendo il seguente codice C#?
Console.WriteLine("Start");
var x = false;
var f = new Func<bool>(() => {Console.WriteLine("Function called"); return true; });
if (x & f.Invoke())
Console.WriteLine("End 1") ;
else Console.WriteLine("End 2" );
Output stampato:
Start
Function called
End 2
Spiegazione: All’inizio stampa subito “Start”.
La piccola difficoltà della domanda sta nell’operatore & bit a bit utilizzato nell’if. Infatti anche se x è false, non può essere cortocircuitata la condizione booleana, come avverrebbe con un operatore && logico, e la funzione f viene quindi invocata in ogni caso, stampando “Function called”.
Infine, non essendo la condizione dell’if verificata, viene stampato “End 2”.