Diciamo che voglio fare una dimostrazione a qualcuno delle differenze tra foreach in C# 4.0 e 5.0.Come compilare C# con lingua specifica Versione
Così scrivo il mio frammento di codice:
public static void Main()
{
string[] fruits = { "Apple", "Banana", "Cantelope" };
var actions = new List<Action>();
foreach (var fruit in fruits)
{
actions.Add(() => Console.WriteLine(fruit));
}
foreach(var a in actions)
{
a();
}
}
Ma non importa quanto compilo, funziona sempre come avviene in 5,0 *. Ho provato a installare la versione in lingua nel file csproj (Build -> Avanzate -> Versione linguaggio) e ho provato solo la costruzione sulla riga di comando:
csc myProgram.cs /langversion:4
non riesco a farlo funzionare il "vecchio" modo. Qualsiasi aiuto? Punti bonus se puoi dirmi come farlo su entrambi i comandi e Visual Studio.
* Per chi non lo sapesse, in C#. < = 4.0 questo dovrebbe stampare Cantelope Cantelope Cantelope
, mentre in C# 5.0+ sarebbe (più intuitivamente) stampare Apple Banana Cantelope
. Here's a link e here's another.
come fai a sapere la sua non è la compilazione del vecchio modo – pm100
Potrebbe aiutare i lettori a sottolineare quello che dovrebbe essere diverso nelle due versioni. Non molte persone sono consapevoli del cambiamento nel modo in cui la variabile del ciclo viene trattata nelle chiusure. –
C# 4 aveva azioni e espressioni Lambda. Cosa pensi che dovrebbe fare che non lo sia? –