Hel*_*lic 3 c# linq expression
我看到了如下代码.我的问题是:
1> ()=>Name
这是什么意思?
2>是Expression<Func<>>
一样的Expression<TDelegate>
吗?如何使用()=>Name
转换Expression<Func<>>
和使用哪个构造函数?大多数Expression类没有公共构造函数.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;
}
}
Run Code Online (Sandbox Code Playgroud)
String
.TDelegate
模板参数.Func<T>
是一种满足TDelegate
约束条件的具体类型.C#编译器将在编译时将lambda转换为适当的类型.