假设我想向某人展示C#4.0和5.0中foreach之间的区别。如何使用特定语言版本编译C#
所以我写了我的代码片段:
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();
}
}
但无论我怎么编译它,它总是工作,它在5.0 *一样。我试着在的csproj文件中设置语言版本(建设 - >高级 - >语言版本),我已经试过只是建立在命令行上:
csc myProgram.cs /langversion:4
我不能让它开始工作“老”的方式。任何帮助?如果您可以告诉我如何在命令行和Visual Studio中执行此操作,则可获得奖励积分。
*对于任何不知道的人,在C#中。 < = 4.0这将打印Cantelope Cantelope Cantelope
,而在C#5.0 +它会(更直观地)打印Apple Banana Cantelope
。 Here's a link和here's another。
你怎么知道它没有编译旧的方式 – pm100
它可能会帮助读者指出两个版本应该有什么不同。并不是很多人意识到循环变量在闭包中的变化。 –
C#4有动作和Lambda表达式。你认为它应该做什么,它不是? –