(注意代码是一个例子)
我有以下语法:
SomeMethod(() => x.Something)
Run Code Online (Sandbox Code Playgroud)
第一个括号在表达式中的含义是什么?
我也很好奇你如何从传入的参数中获取属性名称.这是不可能的?
第一个括号在表达式中的含义是什么?
它是不带参数的方法的lambda语法.如果它需要1个参数,它将是:
SomeMethod(x => x.Something);
Run Code Online (Sandbox Code Playgroud)
如果它需要n + 1个参数,那么它将是:
SomeMethod((x, y, ...) => x.Something);
Run Code Online (Sandbox Code Playgroud)
我也很好奇你如何从传入的参数中获取属性名称.这可能吗?
如果你SomeMethod需要Expression<Func<T>>,那么是:
void SomeMethod<T>(Expression<Func<T>> e) {
MemberExpression op = (MemberExpression)e.Body;
Console.WriteLine(op.Member.Name);
}
Run Code Online (Sandbox Code Playgroud)
这()是一个空参数列表.您正在定义一个不带参数和返回的匿名函数x.Something.
编辑:它的不同之处在于x => x.Something后者需要一个参数并且在该参数上调用Something.以前的版本x必须存在于函数之外的某个地方,并且在外部调用Something x.对于后一个版本,不必有外部x,即使存在,仍然会在函数的参数上调用Something而不是其他内容.
| 归档时间: |
|
| 查看次数: |
5166 次 |
| 最近记录: |