Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么将在.NET2上运行,什么将不运行?_C#_.net_Visual Studio 2012_Compatibility_Backwards Compatibility - Fatal编程技术网

C# 什么将在.NET2上运行,什么将不运行?

C# 什么将在.NET2上运行,什么将不运行?,c#,.net,visual-studio-2012,compatibility,backwards-compatibility,C#,.net,Visual Studio 2012,Compatibility,Backwards Compatibility,我已将Visual Studio 2012和目标框架设置为.NET 2.0 但我有: ThreadPool.QueueUserWorkItem(example => Threadedmethod(intval,classVal) ); void Threadedmethod(int id, MyClass val) { .... } 它编译 我如何判断这在VS2012中是否有效?我被告知=>运算符与.NET 2.0不兼容 据我所知,=>在.NET2.0中无效 事实并非如此。您可以在V

我已将Visual Studio 2012和目标框架设置为.NET 2.0

但我有:

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

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

我如何判断这在VS2012中是否有效?我被告知
=>
运算符与.NET 2.0不兼容

据我所知,=>在.NET2.0中无效

事实并非如此。您可以在VS2012上运行.Net 2.0 framework

选中此项,其中列出了VS2012中允许的所有框架

Visual Studio 2012 DEV111.02.0、3.0、3.5、4.0、4.5 02012-09-12 2012年9月12日

从:

框架目标不能保证应用程序运行 正确地您必须测试您的应用程序,以确保它在 目标版本。您不能将以下框架版本作为目标: 早于.NET Framework 2.0


我想你把
.net
版本和
c
版本搞混了。当您以.NET2.0为目标时,仍然可以使用c#(语言特性),如lambda、扩展方法、集合初始值设定项、对象初始值设定项等

这与.Net版本无关。问题是您不能使用在.Net版本>目标版本中新添加的类

请记住,当它被编译时,您的代码是完全有效的,并且它将在只有.NETFramework 2.0的机器上正常运行

我被告知=>在.NET2.0中无效

这是错误的,正确的语句在c#2.0中无效,但您在VS2012中没有使用c#2.0。您在那里使用的是c#5.0编译器

有关更多信息,请特别阅读.NET2.0和3.0中的C#3部分


我的结论是:毫无疑问,您的应用程序将在.Net 2.0中完美运行。

这是说,在vs2012中,我不能保证它将在.Net 2.0下运行?不,这是说,您可以在针对.Net 2.0时使用C#3.0编译器的功能,并且它将毫无问题地运行。您为什么关心编译器的版本?您仍然可以使用最新的编译器和旧的.NET版本,因为我被告知只在这个项目中使用c#2.0功能。我想知道。不,你误解了你的需求,或者给你需求的人不理解.NET2.0和C#2.0之间的区别。它们是完全不同的问题。这与上面的相同吗?QueueUserWorkItem(委托{Threadedmethod(intvalclassVal);});你真的应该停止害怕告诉你的客户真相。如果有必要,把他们发到这个帖子,告诉他们“约翰·桑德斯是这么说的”。编译器版本不限制代码可以在哪个.NET Framework版本上运行。没有理由不能在面向.NET2.0的应用程序中使用C#3.0到C#5.0。