C# 3.0 compatibility on .Net 2.0

心不动则不痛 提交于 2019-12-30 09:53:19

问题


What are the C# 3.0 language features we can use in an application that targets .Net 2.0 framework ?

PS:I know few like Lambda expressions and var keyword


回答1:


Please see here:

Using C# 3.0 (.Net 3.5) syntax in a .Net 2.0 application

For a complete run down of what you can and can't do when targeting the .NET 2.0 Framework and using C# 3.0.

In summary:

  • You can't use the new 3.5 assemblies (System.Data.Linq, System.Xml.Linq, System.Core).
  • You can't use Linq/Query Extensions or Extension Methods (however, see below for ways to enable the use of both Linq/Query Syntax and Extension Methods!).
  • You can use the Var keyword, Lambda statements, Object Initializers, Anonymous Types & Auto-Implemented Properties.

Extension methods sort-of work, however, they require "System.Runtime.CompilerServices.ExtensionAttribute" in order to work, and this type is found within the System.Core DLL (which is not strictly part of the .NET 2.0 framework).

Query Syntax cannot be used "out of the box" so-to-speak, however, it can be used if a 3rd party DLL (like LINQBridge) is used. This DLL effectively re-implements many of the "missing" types that you need to perform LINQ when targeting the .NET 2.0 framework. It also implements the "ExtensionAttribute" type needed for Extension methods to work, so simply adding/referencing the LINQBridge DLL from your project will enable LINQ, Query Syntax/Expressions and Extension Methods!




回答2:


I have an article on this very topic.

In brief:

Supported:

  • Automatically implemented properties, implicitly typed local variables and arrays, object and collection initializers, anonymous types, partial methods, lambda expressions converted into delegate types.

Partially supported:

  • Extension methods (requires an attribute) and query expressions (requires something like LINQBridge to be useful)

Not supported:

  • Lambdas converted into expression trees

In fact, I have heard that conversion into expression trees is available with the aid of Mono's implementation of System.Core. I haven't tried it yet though... I keep meaning to do so (and then update the page).



来源:https://stackoverflow.com/questions/1404507/c-sharp-3-0-compatibility-on-net-2-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!