używam .NET 4 (nie .NET 4.5 lub jakąkolwiek inną wersję ram!)Dlaczego różne wersje programu Visual Studio będą wyświetlać różne wyniki tego samego kodu?
Dlaczego różne wersje Visual Studio wyjściowy będzie innego wyniku tego samego kodu z wykorzystaniem SAME .NET Framework?
Mam następujący
static void Main(string[] args)
{
var values = new List<int>() { 1, 2, 3, 4, 5 };
var funcs = new List<Func<int>>();
foreach (var v in values) {
funcs.Add(() => v * 10);
}
foreach (var f in funcs) {
Console.WriteLine(f());
}
Console.ReadKey();
}
W Visual Studio wyjście jest 10 20 30 40 50
(target .NET v == 4).
W programie Visual Studio dane wyjściowe to 50 50 50 50 50
(docelowy .NET v == 4).
Gdzie jest problem? Jak zidentyfikować C# (nie .NET!) Wersja używana przez każdego Studio
dla .NET 4
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> csc /?
Microsoft (R) Visual C# Compiler wersja 4.0.30319.33440
Microsoft (R) .NET Framework 4.5C: \ Program Files (x86) \ Microsoft Visual Studio 10,0 \ VC> csc /?
Microsoft (R) Visual C# wersja kompilatora 4 .0.30319.33440
Microsoft (R) .NET Framework 4.5C: \ Program Files (x86) \ Microsoft Visual Studio 12,0> csc/?
Microsoft (R) Visual C# Compiler wersja 12 .0.30110.0
dla C# 5
EDIT
mogę powiedzieć, że
VS 2010 == C# 4
VS 2013 == C# 5
i to niezależnie od docelowa struktura konkretnego rozwiązania?
Wyświetlam wyjście 'csc /?' Na mojej maszynie – serhio
Myślę, że jest to wyjaśnione w [Czy zmieniono użycie zmiennych w C# 5?] (Http://stackoverflow.com/questions/12112881/has- foreachs-use-of-variables-was-changed-in-c-sharp-5). –
@Habib nie jest duplikatem. moim pytaniem jest ** dlaczego różne Visual Studio targetowania tego samego .Net daje inny wynik ** – serhio