ArrayAccess与表达式树中的ArrayIndex

Alw*_*wyn 9 .net c# linq expression-trees

这两个有什么区别?从API文档看来,它们似乎是为了做同样的事情.

ArrayAccess接口

ArrayIndex

在这种情况下,它们似乎是多余的,所以我必须在这里遗漏一些东西

Cor*_*rey 12

编辑:我最初的答案是如此严重错误,我再次尝试.

Expression.ArrayAccess返回一个IndexExpression可用于获取或设置数组中元素值的值.

Expression.ArrayIndex返回a BinaryExpression或a MethodCallExpression取决于提供的数组表达式的等级(维数).然后可以使用返回的表达式从数组中读取值.

因此,ArrayAccess为您提供一个表达式,它提供对数组数据的读写访问权限,同时ArrayIndex仅提供读访问权限.

  • 我认为存在的原因是表达式树在.Net 3.5和.Net 4之间的变化方式.在3.5中,表达式树不支持赋值,因此只有`ArrayIndex`.使用4时,需要一些允许在数组中设置值的东西,因此添加了"ArrayAccess". (9认同)