- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
UnaryExpression
有一些问题。
这是可行的:
Expression<Func<List<string>, object>> k = l => l.Count;
//got member in this case like this
var member = ((k.Body as UnaryExpression).Operand as MemberExpression).Member;
在上面的例子中,k.Body.NodeType
是 ExpressionType.Convert
。但是 ExpressionType.ArrayLength
有点棘手。 在以下情况下,我将如何获取 PropertyInfo
member
?:
Expression<Func<string[], int>> k = l => l.Length;
var member = ??
在第二种情况下,k.Body
类似于ArrayLength(l)
。
我可以用这样的黑客来做到这一点:
var member = (k.Body as UnaryExpression).Operand.Type.GetProperty("Length");
但这感觉不像是一种直接的表达方式。它更像是一个普通的旧反射调用,其中传递了脏字符串“Length”。有没有更好的办法?
最佳答案
这是一个 ArrayLength
节点,您可以使用 Expression.ArrayLength
创建它方法。
它只是一个 UnaryExpression
,带有一个 Operand
(数组表达式)和一个 ArrayLength
的 NodeType
。我不完全清楚你想知道什么,但希望对 Expression.ArrayLength
的调用是你所追求的。
编辑:尽管是一个Array.Length
property ,这不是通常使用的。例如:
int[] x = new int[10];
Array y = x;
int a = x.Length;
int b = y.Length;
... 然后评估 x.Length
使用 ldlen
IL 指令,而评估 y.Length
使用对属性的调用。
关于c# - 如何获取 ArrayLength 类型表达式的 MemberInfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336342/
例如: array1 = new Array(5); array2 = new Array(10); console.log(array1) 和 console.log(array2) 都会返回 []
我正在尝试使用 powermock 测试一种方法。我还没有写任何测试用例。只是想为 Mocking 设置类(class)。这是我到目前为止所拥有的: @RunWith(PowerMockRunner.
UnaryExpression 有一些问题。 这是可行的: Expression, object>> k = l => l.Count; //got member in this case like
for (int i=0; i
这个问题在这里已经有了答案: Is Chrome’s JavaScript console lazy about evaluating objects? (7 个答案) 关闭 5 年前。 Javas
这行到底是什么意思? define是什么很清楚,但是我不明白为什么要在分母处传递x的指针: #define ArrayLength(x) (sizeof(x)/sizeof(*(x))) 谢谢 最佳答
我是一名优秀的程序员,十分优秀!