Expression Treesは、BCLオブジェクト/ライブラリのコア言語機能または機能ですか? C#のコア言語機能なしで構築できないものですか?Expression TreesはC#のコア言語機能ですか?
答えて
いいえ、式ツリーは言語機能ではありません。これらはC#固有のものではないため、任意の.NET言語から使用できます。これらは組み込みアセンブリで定義されている通常のCLR型です。
ラムダ式(およびLINQ)による構築はC#固有です。しかし、あなたは常にExpression
を手作業で作ることができます。 C#コンパイラ自体は、よく知られている静的構築メソッドExpression
への呼び出しを出す以外に何もしません。古い.NETバージョンに設定されたReflectorを使用してバイナリを逆コンパイルすると、コンパイラが発行する内容を調べることができます。
式ツリーで.NET Frameworkの内部APIを使用するかどうかは関連性のない質問ですが、なぜ必要なのかは考えられません。
"いいえ、それらは言語機能ではありません。それらはC#固有ではないように、あらゆる.NET言語から使用可能です。" - これは正しいことではありません。それらは、C#とF#、そしてVisual Basicの言語機能です。----それぞれは、ソースファイルのテキストから実際に式ツリーを作成するために、言語の構文などを知る必要があります。 –
@ティモシー:いいえ、あなたは_ラムダ式を指しています_。 _これらは言語機能です。 'Expression'クラス自体は普通の.NETクラスです。 .NETクラスを使用できるものはすべて、 'Expression'クラスを使用できます。 –
@JeffMercadoああ...右。元の質問は、 'Expression'クラスそのものではなく、ラムダ式から'エクスプレッション 'フィーチャに関するものだと考えていました。はい、それらは言語機能ではありません。 :) –
Expression
クラス定義から分かるように、それはSystem.Linq.Expressions
名前空間で定義されています。これは、ExpressionはC#言語機能ではなく、CLRをターゲットとするすべての言語で使用できるクラスです。
たとえば、C#とVB.NETを使用して式ツリーを作成して使用する方法を示すMSDNの記事 "Expression Trees (C# and Visual Basic)"があります。
- 1. バリアント集合体はコア言語機能として
- 2. アルマジロのC言語での機能
- 3. プログラミング言語機能
- 4. Schemeのコア言語仕様
- 5. パネルイベントはC言語では機能しません。#
- 6. C#言語の新機能のリクエストはどこに送信できますか?
- 7. 言語機能直交?
- 8. オブジェクトを使って再生するC#とExpression Treesで "pattern"をクエリする
- 9. 他の言語に言語機能を統合する
- 10. コアのBluetooth機能
- 11. 機能的で純粋なプログラミング言語
- 12. 「コア言語」とはどういう意味ですか?
- 13. 混乱は、私の文はC言語で、多くのOOP機能も
- 14. dllとC言語のような機能#
- 15. 多言語djangoサイトの検索機能
- 16. 多言語機能のサポートWindows phone 7
- 17. ビジュアルプログラミング言語はどのように機能しますか?
- 18. プログラミング言語でコンパイラを作成するために必要な言語機能は何ですか?
- 19. Prism(.NET)のコア機能
- 20. 機能プログラミング言語はグラフィックプログラミングに適していますか?
- 21. 多言語PHPクラス - ショートカット機能
- 22. MySqlのフルテキスト検索は、非ラテン言語(ヘブライ語、アラビア語、日本語...)で合理的に機能しますか
- 23. 機能ポインタの代入はC言語で行われますが、C++では動作しません
- 24. C#は高級言語ですか?
- 25. C++ 1z言語機能にコルーチンを使用していますか?
- 26. システムコールはC言語以外の言語でも利用できますか?
- 27. Eclipseの言語拡張機能を作成しますか?
- 28. ECMAScript 5とJavaScript 1.8.5の言語機能の相関関係は何ですか?
- 29. C++ではなくC言語のオブジェクトファクトリ
- 30. 構文複数のエディタで機能するハイライトツール/言語
「Func」から「式」の形式のラムダから暗黙的なキャストがある限り、コンパイラはコンパイル時に実行しなければならないと思います。 –
ラムダ式を式ツリーに変換するのではなく、ビルダー・メソッドを使用できます。しかし、それは*もっと冗長*です。 – CodesInChaos
この機能のどの部分をお求めですか? – SLaks