c# - SomeMethod(() => x.Something) 在 C# 中是什么意思

标签 c# lambda

(注意代码是示例)

我有以下语法:

SomeMethod(() => x.Something) 

表达式中的第一个括号是什么意思?

我也很好奇如何从传入的参数中获取属性名称。这可能吗?

最佳答案

What do the first brackets mean in the expression?

这是不带参数的方法的 lambda 语法。如果它采用 1 个参数,它将是:

SomeMethod(x => x.Something);

如果它有 n + 1 个参数,那么它会是:

SomeMethod((x, y, ...) => x.Something);

I'm also curious how you can get the property name from argument that is being passed in. Is this possible?

如果您的 SomeMethod需要 Expression<Func<T>> ,然后是:

void SomeMethod<T>(Expression<Func<T>> e) {
    MemberExpression op = (MemberExpression)e.Body;
    Console.WriteLine(op.Member.Name);
}

关于c# - SomeMethod(() => x.Something) 在 C# 中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1370236/

相关文章:

c# - 通用方法无法在 IEnumerable<T> 上利用协方差

c# - 为什么 nhibernate 3.3 不允许 ICollection 上的私有(private) setter?

javascript - 如何使用 AWS JavaScript SDK (dynamoDB) 处理 UnprocessedItems?

lambda - 使用 lambda 在 java8 中具有双重条件的 Foreach 循环

Python - 功能 "find"?

c# - 为什么 SqlQuery 比在 View 上使用 LINQ 表达式快很多?

c# - 如何从C#中的字符串中提取十进制数

c# - XAML 和 MySQL 数据库访问

c# - 获取 lambda 表达式的表达式文本

python - 按值比较 lambda 表达式指针