私は、.Net 3.5 がコンパイル先の IL に変更を加えていないという主張を聞いたことがあります。私が知っているすべてのコンパイラ機能が導入されたことを考えると、実際には、それらはすべて同じ古い IL で実装できるように見えますが、この主張を裏付ける公式ソースは見つかりません。本当ですか?
3 に答える
5
IL 自体には変更はないと思いますが、動的メソッドをより効率的にする、式ツリーのコンパイルを可能にするなど、CLR 実装内で大幅な変更が行われました。ビルドのセキュリティに関して変更があったことを覚えているようです。動的メソッド。式ツリーを生成するラムダ式がプライベート メソッドを呼び出して、比較的低い信頼環境でも機能するようにします。コンパイラは、ソース コードがコンパイルされる時点でプライベート メソッドにアクセスできるため、プライベート メソッドを呼び出すことが有効であることを認識しています。ただし、それを証明するのは難しいです:) Eric Lippert によるこのメモを参照してください。
于 2009-06-07T07:42:05.063 に答える
0
..その結果、必要に応じて、最新のコンパイラを使用している限り、.NET2.0プロジェクトで多くの.NET3.5機能を使用できます。
- 自動プロパティ
- 拡張メソッド(少し汚いトリックが必要です)
- オブジェクト初期化子
- 型推論(varキーワード)
- ラムダ式
于 2009-06-07T10:08:34.377 に答える
0
出荷されている CLR (バージョン 2.0.50727) は .NET 2.0 以降変更されていないため、IL は同一です。(こちらの SO QAも参照してください)
于 2009-06-07T07:52:52.077 に答える