假設我想向某人展示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表達式。你認爲它應該做什麼,它不是? –