Angenommen, ich möchte jemanden über die Unterschiede zwischen foreach in C# 4.0 und 5.0 demonstrieren.So kompilieren Sie C# mit bestimmter Sprachversion
So schreibe ich mein Code-Schnipsel up:
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();
}
}
Aber egal, wie ich es kompilieren, es funktioniert immer, wie es in 5,0 * tut. Ich habe versucht, die Sprachversion in der csproj Datei einstellen (Build -> Erweitert -> Sprachversion) und ich habe versucht, Gebäude es nur auf der Kommandozeile:
csc myProgram.cs /langversion:4
ich nicht bekommen kann es zu arbeiten der "alte" Weg. Irgendeine Hilfe? Bonuspunkte, wenn Sie mir sagen können, wie es in der Befehlszeile und in Visual Studio funktioniert.
* Für alle, die nicht wissen, in C#. < = 4.0 würde dies Cantelope Cantelope Cantelope
drucken, während in C# 5.0 + es (intuitiver) Apple Banana Cantelope
drucken würde. Here's a link und here's another.
, wie wissen Sie, es ist nicht die alte Art und Weise der Zusammenstellung – pm100
Es könnte Leser helfen zu zeigen, was in den beiden Versionen unterschiedlich sein sollte. Nicht viele Leute sind sich der Veränderung bewusst, wie die Schleifenvariable in Schließungen behandelt wird. –
C# 4 hatte Aktionen und Lambda-Ausdrücke. Was denkst du sollte es tun, dass es nicht ist? –