.Net 2.0でのC#3.0の互換性
-
05-07-2019 - |
質問
.Net 2.0フレームワークをターゲットとするアプリケーションで使用できる C#3.0 言語機能は何ですか?
PS:Lambda式や var
キーワード
解決
こちらをご覧ください:
。Net 2.0アプリケーションでのC#3.0(.Net 3.5)構文の使用
.NET 2.0 Frameworkをターゲットにし、C#3.0を使用するときにできることとできないことを完全に分析するには。
要約:
- 新しい3.5アセンブリ(System.Data.Linq、System.Xml.Linq、System.Core)は使用できません 。
- Linq / Queryを使用できない拡張機能または拡張機能(ただし、以下を参照してくださいLinq / Query構文と拡張メソッドの両方の使用を有効にする方法!)。
- Varキーワードを使用 できます、ラムダステートメント、オブジェクト初期化、匿名タイプ& 自動実装プロパティ。
拡張メソッドの並べ替え作業は、ただし、「System.Runtime.CompilerServices.ExtensionAttribute」が必要です;動作するために、このタイプはSystem.Core DLL(厳密には.NET 2.0フレームワークの一部ではありません)内にあります。
クエリ構文は使用できません" out of the box"ただし、サードパーティのDLL( LINQBridge )が使用されます。このDLLは、「欠落」の多くを効果的に再実装します。 .NET 2.0フレームワークを対象とするときにLINQを実行する必要があるタイプ。また、" ExtensionAttribute"も実装します。拡張メソッドが機能するために必要なタイプを入力してください。プロジェクトからLINQBridge DLLを追加/参照するだけで、LINQ、クエリ構文/式、拡張メソッドが有効になります。
他のヒント
このトピックに関する記事を持っています。
概要:
サポート:
- 自動的に実装されたプロパティ、暗黙的に型指定されたローカル変数と配列、オブジェクトとコレクションの初期化子、匿名型、部分メソッド、デリゲート型に変換されたラムダ式。
部分的にサポート:
- 拡張メソッド(属性が必要)およびクエリ式(LINQBridgeなどが必要です)
サポートされていません:
- 式ツリーに変換されたラムダ
実際、Monoの System.Core
の実装により、式ツリーへの変換 が利用可能であると聞きました。私はまだ試していません...私はそうすることを意味し続けています(そしてページを更新します)。