什么可以在.NET 2上运行,什么不能运行?

3

我有Visual Studio 2012,并将目标框架设置为.NET 2.0。

但是,我遇到了以下问题:

ThreadPool.QueueUserWorkItem(example => Threadedmethod(intval,classVal) );

void Threadedmethod(int id, MyClass val)
{ ....  }

然后它就可以编译。

我怎样才能知道这个在VS2012中是否可行?有人告诉我=>操作符与.NET 2.0不兼容。


你为什么关心编译器版本呢?你仍然可以使用最新的编译器和旧版的.NET。 - John Saunders
由于我被告知只能在这个项目中使用C# 2.0功能,所以我想知道。 - f1wade
2
不,你误解了你的需求,或者给你提供需求的人不理解.NET 2.0和C# 2.0之间的区别。它们是完全不同的问题。 - John Saunders
这和上面的代码一样吗? ThreadPool.QueueUserWorkItem(delegate { Threadedmethod(intvalclassVal);} ); - f1wade
你应该停止害怕告诉客户真相。如果必要的话,可以将他们引导到这篇文章并告诉他们“John Saunders说过”。编译器版本不会限制代码可以运行在哪个.NET Framework版本上。在针对.NET 2.0的应用程序中,完全可以使用C# 3.0到C# 5.0。 - John Saunders
2个回答

4
我觉得你可能混淆了.net版本和c#版本。当你的目标是.Net 2.0时,你仍然可以使用c#(语言特性)例如lambda、扩展方法、集合初始化器、对象初始化器等。
这与.Net版本无关。问题在于你不能使用新添加到.Net版本中的类,超过你的目标版本。
请记住,当代码编译后,它是完全有效的,并且将在只有.Net Framework 2.0的计算机上正常运行。

我被告知=>在.net 2.0中无效

这是错误的,正确的陈述应该是c# 2.0中无效,但是你没有在VS2012中使用c# 2.0。你在那里使用的是c# 5.0编译器。
要了解更多信息,请阅读Jon's article,特别是在.NET 2.0和3.0中使用C# 3部分。
我的结论是:毫无疑问,您的应用程序将在 .Net 2.0 中完美运行

1

据我所知, => 在 .net 2.0 中无效,这是不正确的。您可以在 VS2012 上运行 .Net 2.0 framework。

请查看此 wiki,其中列出了所有允许在 VS2012 中使用的框架。

Visual Studio 2012 Dev11 11.0 2.0, 3.0, 3.5, 4.0, 4.5 02012-09-12September 12, 2012

来自 MSDN 的说明:

框架定位不能保证您的应用程序将正确运行。您必须测试您的应用程序以确保它针对目标版本运行。您不能针对早于 .NET Framework 2.0 的框架版本进行定位。


这是在说在VS2012中,我不能保证它能在.NET 2.0下运行? - f1wade
不,它的意思是你可以在针对.NET 2.0时使用C# 3.0编译器的功能,并且它将可以正常运行。 - John Saunders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接