6

式ツリーはコア言語機能ですか、それとも BCL オブジェクト/ライブラリの機能ですか? C# のコア言語機能なしでは構築できないものですか?

4

2 に答える 2

3

いいえ、式ツリーは言語機能ではありません。どの .NET 言語からでも使用できるため、C# 固有にすることはできません。これらは、組み込みアセンブリで定義された通常の CLR 型です。

ラムダ式 (および LINQ) による構築は、C# 固有です。しかし、いつでも同等のものExpressionを手動で作成できます。ExpressionC# コンパイラ自体は、よく知られている静的構築メソッドへの呼び出しを発行するだけです。古い .NET バージョンに構成された Reflector を使用してバイナリを逆コンパイルすることにより、コンパイラが出力するものを調べることができます。

式ツリーが .NET Framework の内部 API を使用するかどうかは別の問題ですが、そうする必要がある理由が思い浮かびません。

于 2013-04-26T21:19:49.073 に答える
0

クラス定義からわかるように、名前空間Expressionで定義されています。System.Linq.Expressionsこれは、Expression は C# 言語の機能ではなく、CLR を対象とするすべての言語で使用できるクラスです。

たとえば、「Expression Trees (C# and Visual Basic)」というタイトルの MSDN の記事では、C# と VB.NET を使用して Expression Trees を作成および使用する方法を説明しています。

于 2013-04-26T21:38:45.317 に答える