Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 语言版本和.net版本_C#_.net - Fatal编程技术网

C# 语言版本和.net版本

C# 语言版本和.net版本,c#,.net,C#,.net,我的问题是,但是我想知道我是否可以在旧版本的.NET中使用不同版本的C。在我看来,这一定是可能的,因为例如,Lambda本身与框架无关,它是一个C#(和VB,但我在这里只谈论C#) 问题是,我不能测试这个,因为只有VS2005在工作,我的家用电脑坏了 因此,在VS 2010/2012中创建.NET 2.0项目时,我可以使用lambda的/Linq等吗?如果将目标框架设置为2.0并使用Visual studio 2010,则可以使用lambda表达式。但是不能使用现成的LINQ,因为该框架是在.N

我的问题是,但是我想知道我是否可以在旧版本的.NET中使用不同版本的C。在我看来,这一定是可能的,因为例如,Lambda本身与框架无关,它是一个C#(和VB,但我在这里只谈论C#)

问题是,我不能测试这个,因为只有VS2005在工作,我的家用电脑坏了


因此,在VS 2010/2012中创建.NET 2.0项目时,我可以使用lambda的/Linq等吗?

如果将目标框架设置为2.0并使用Visual studio 2010,则可以使用lambda表达式。但是不能使用现成的LINQ,因为该框架是在.NET3.5中引入的


您应该看到这篇文章:

如果将目标框架设置为2.0并使用Visual studio 2010,则可以使用Lambda表达式。但是不能使用现成的LINQ,因为该框架是在.NET3.5中引入的


您应该看到这篇文章:

语言版本和框架版本实际上是绑定在一起的,VisualStudio还将根据项目设置确定可用的功能

对于.NET2.0项目,您将无法使用LINQ,因为它将绑定到C#2.0而不是C#3.0(在引入LINQ时,扩展方法也是如此)


请注意,3.0和3.5框架使用2.0运行时。

语言版本和框架版本实际上是绑定在一起的,Visual Studio还将根据项目设置确定可用的功能

对于.NET2.0项目,您将无法使用LINQ,因为它将绑定到C#2.0而不是C#3.0(在引入LINQ时,扩展方法也是如此)

请注意,3.0和3.5框架使用2.0运行时

那么,在VS 2010/2012中创建.NET 2.0项目时,我可以使用lamda的/Linq等吗

我有一本书。有些功能是特定于框架的(或特定于CLR的),有些则不是

例如,您可以在.NET 2.0中使用lambda表达式、匿名类型和自动实现的属性,而不会出现任何问题

如果您提供了一个替代实现(如),则可以使用LINQ to对象。其他LINQ提供者(LINQ到SQL等)显然可以使用Mono中的库,但就个人而言,如果可能的话,我宁愿升级到框架的更高版本

您将无法使用C#4中的动态类型,因为它需要仅在.NET4中存在的类型,并且我认为这些类型不容易以兼容的方式进行后端口。(这可能是可能的,因为至少有一个DLR for.NET3.5版本,但这是否与C#4编译器配合良好则是另一回事。)

那么,在VS 2010/2012中创建.NET 2.0项目时,我可以使用lamda的/Linq等吗

我有一本书。有些功能是特定于框架的(或特定于CLR的),有些则不是

例如,您可以在.NET 2.0中使用lambda表达式、匿名类型和自动实现的属性,而不会出现任何问题

如果您提供了一个替代实现(如),则可以使用LINQ to对象。其他LINQ提供者(LINQ到SQL等)显然可以使用Mono中的库,但就个人而言,如果可能的话,我宁愿升级到框架的更高版本


您将无法使用C#4中的动态类型,因为它需要仅在.NET4中存在的类型,并且我认为这些类型不容易以兼容的方式进行后端口。(这是可能的,因为至少有一个版本的.NET3.5的DLR,但这是否与C#4编译器配合良好则是另一回事。)

有语言和编译器,也有CLR。您可以在CLR2.0上运行.NET 2.0、3.0和3.5。不能在CLR 2.0上使用.NET 4功能


因此,您可以将项目设置为.NET 3.5,在具有.NET 3.5的计算机上编译,并在具有.NET 2.0的计算机上运行它。

有语言和编译器,还有CLR。您可以在CLR2.0上运行.NET 2.0、3.0和3.5。不能在CLR 2.0上使用.NET 4功能


因此,您可以将项目设置为.NET 3.5,在具有.NET 3.5的计算机上编译,并在具有.NET 2.0的计算机上运行。

但是,为了避免使用2.0中不存在的类型或成员,您可能希望将其设置为2.0,为了避免使用2.0.Ha中不存在的类型或成员-我的最后几个问题基于您的单例模式示例-我想我真的应该买这本书,因为它似乎涵盖了我试图理解的很多方面。:)编译器允许我创建动态类型,但不以任何方式使用它!var sb=新的StringBuilder();动态dsb=sb;编译没有错误,但我无法访问任何dsb方法!我想这是(根据你的评论)我需要.NET4的地方。0@DaveRook:是的,我想是的-我真的很惊讶它竟然能起这么大的作用。哈-我最后几个问题是基于你的单身模式的例子-我想我真的应该买这本书,因为它似乎涵盖了我试图理解的很多方面。:)编译器允许我创建动态类型,但不以任何方式使用它!var sb=新的StringBuilder();动态dsb=sb;编译没有错误,但我无法访问任何dsb方法!我想这是(根据你的评论)我需要.NET4的地方。0@DaveRook:是的,我想是这样的-我真的很惊讶它竟然能起到这么大的作用。在我看来,“你不能使用LINQ”有点强。你不能开箱即用,但你可以用LINQ的某些方面做一些工作。@JonSkeet,谢谢,我的意思是开箱即用。我没用过林桥。我已经修改了我的答案以反映你的评论。在我看来,“你不能使用LINQ”有点强。你不能开箱即用,但你可以通过一些工作来使用LINQ的某些方面。@JonSkeet,谢谢,我的意思是开箱即用。我没用过林桥。我有