- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写评估 .NET Expression
树的代码。我正在尝试创建一个 C# 4 测试来练习我对 ExpressionType.Index
的处理,但我不知道如何通过 LambdaExpression
创建该类型的表达式>。无论我尝试什么,表达式都会以 ExpressionType.Call
或 ExpressionType.ArrayIndex
的形式出现。例如:
IList<int> myList = new ObservableCollection<int> { 3, 56, 8 };
Expression<Func<int>> myExpression = () => myList[3];
// myExpression.Body.NodeType == ExpressionType.Call
myList = new int[] { 3, 56, 8 };
myExpression = () => myList[3];
// myExpression.Body.NodeType == ExpressionType.Call
int[] myArray = new int[] { 3, 56, 8 };
myExpression = () => myArray[3];
// myExpression.Body.NodeType == ExpressionType.ArrayIndex
List<int> myNonInterfaceList = new List<int> { 3, 7, 4, 2 };
myExpression = () => myNonInterfaceList[3];
// myExpression.Body.NodeType == ExpressionType.Call
什么是 IndexExpression
,可以通过 C# 4 中的内联 LambdaExpression
创建吗?
最佳答案
安IndexExpression
正是您所期望的(即数组访问或索引器属性)。它是从 DLR 移植过来的众多新表达式类型之一。然而,C# 4.0 编译器使用与其先前版本相同的表达式类型,因此它不会使用 IndexExpression
。任何地方。如果其设计者愿意,其他语言也可以这样做。
创建 IndexExpression
以编程方式,使用静态 ArrayAccess()
, MakeIndex()
, 或 Property()
Expression
上的方法类。
关于c# - 如何创建 NodeType 为 ExpressionType.Index 的 .NET 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3340500/
我的印象是在 lambda 表达式中不可能赋值。例如,以下(诚然不是很有用)代码 Expression> expr = (x, y) => y = x; 产生编译错误 An expression tr
长话短说 如何创建一个表达式,其中 Expression.NodeType == ExpresionType.IsTrue || ExpresionType.IsFalse 背景信息 我正在创建 En
我正在解析表达式树。给定 ExpressionType.MemberAccess 的 NodeType,如何获取该字段的值? 来自 C# MSDN 文档:MemberAccess 是表示从字段或属性读
我正在编写评估 .NET Expression 树的代码。我正在尝试创建一个 C# 4 测试来练习我对 ExpressionType.Index 的处理,但我不知道如何通过 LambdaExpress
我正在查看来自 HomeKit Catalog: Creating Homes, Pairing and Controlling Accessories, and Setting Up Trigger
System.Linq.Expressions.ExpressionVisitor 有一个名为 VisitExtension 的方法,它似乎除了在表达式被访问。 protected internal
我是一名优秀的程序员,十分优秀!