【问题标题】:ArrayAccess vs. ArrayIndex in Expression Tree表达式树中的 ArrayAccess 与 ArrayIndex
【发布时间】:2013-02-20 06:44:53
【问题描述】:

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

ArrayAccess

对比

ArrayIndex

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

【问题讨论】:

    标签: c# .net linq expression-trees


    【解决方案1】:

    编辑:我最初的答案非常错误,我再次尝试。

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

    Expression.ArrayIndex 根据提供的数组表达式的等级(维数)返回BinaryExpressionMethodCallExpression。然后可以使用返回的表达式从数组中读取一个值。

    所以ArrayAccess 为您提供了一个表达式,该表达式提供了对数组数据的读写访问权限,而ArrayIndex 只为您提供了读取访问权限。

    【讨论】:

    • 它实际上有重载,需要多个参数。
    • 我认为两者都存在的原因是表达式树在 .Net 3.5 和 .Net 4 之间的变化方式。在 3.5 中,表达式树不支持赋值,所以只有 ArrayIndex。对于 4,需要允许在数组中设置值的东西,因此添加了 ArrayAccess
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多