2013-02-20 4 views
8

これらの2の違いは何ですか?彼らはまったく同じことを行うことを意図されたように、APIドキュメントから、それはそうです。ArrayAccessの

ArrayAccess

ArrayIndex

その場合、彼らはので、私はここで何かが欠けする必要があり、冗長なようです。

答えて

10

編集:私の最初の答えはとてもひどく間違っていて、もう一度やり直しています。

Expression.ArrayAccessは、配列内の要素の値を取得または設定するために使用できるIndexExpressionを返します。

Expression.ArrayIndexは、指定された配列式のランク(次元数)によってBinaryExpressionまたはMethodCallExpressionのいずれかを返します。返された発現は、アレイから値を読み取るために使用することができます。

したがってArrayAccessは、配列データへの読み取りと書き込みの両方のアクセスを提供する式を提供します。一方、ArrayIndexは読み取り専用です。

+1

それは実際に複数のパラメータを受け取るオーバーロードがあります。 P – Alwyn

+0

はくそ...ことを逃しました。 4では、配列に値を設定できるようになる何かの必要があったので、 'ArrayAccess'を添加しました。 – Corey

+8

は、私は両方が存在する理由は、式ツリーは、割り当てをサポートしていませんでした式ツリーが3.5で.NET 3.5と.NET 4との間に変化方法だと思いますので、 'だけArrayIndex'があった: – svick

関連する問題