c# - LambdaExpression 构造函数

标签 c# linq expression

我看到了如下代码。我的问题是:

1> ()=>Name这是什么意思?

2> 是 Expression<Func<>>Expression<TDelegate>相同? ()=>Name如何转换为 Expression<Func<>>使用哪个构造函数?大多数 Expression 类没有公共(public)构造函数。 C# 编译器如何将 Lambda 转换为 Expression?

3> Parse 函数的性能成本是多少?

public class Test
{
    public string Name {get;set;}

    public void Start()
    {
        Parse(()=>Name);
    }

    public string Parse<T>(Expression<Func<T>> exp)
    {
        var mexp = (System.Linq.Expressions.MemberExpression)expression.Body;
        return mexp == null ? "" : mexp.Member.Name;
    }
}

最佳答案

  1. 这是一个没有参数的 lambda,但结果是 String .
  2. 没有。 TDelegate是模板参数。 Func<T>是满足 TDelegate 的具体类型的约束。 C# 编译器会在编译时将 lambda 转换为适当的类型。
  3. 您应该测量才能回答这个问题。

关于c# - LambdaExpression 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31208336/

相关文章:

c# - 更改中继器中链接按钮的文本

c# - 查询数据库中的每条记录比使用 LINQ 更快

c# - 有没有办法在 DBSet 的查询中包含本地缓存的项目?

c# - 为什么 EF 无法按另一个集合的顺序对项目进行排序以及如何解决?

c - 在没有堆栈的情况下处理 boolean 表达式?

java - 如何在自定义 jsp 标记内连接 JSP 表达式内的字符串文字

c# - 比较两个列表的最快方法

c# - 使用从安装位置的自定义操作中检索的数据

c# - 将返回表达式的方法引用到另一个方法的语法?

c# - 组合两个 linq 表达式