例如,我有一个func里面的方法:
private void Method()
{
Func<int, string> myFunc => (int) { return int.ToString();}
var res = myFunc(42);
}
Run Code Online (Sandbox Code Playgroud)
Func将被编译1次或每次调用方法时?
如果你有这样的话,也请分享一些链接,因为这是一种争论
看起来你是混乱的表达:
Expression<Func<int, string>> myFuncExpr = someInt => someInt.ToString();
Run Code Online (Sandbox Code Playgroud)
和代表们:
Func<int, string> myFunc = someInt => someInt.ToString();
Run Code Online (Sandbox Code Playgroud)
当使用lambdas时,它们具有类似的声明语法,但在调用之前,表达式树将不会编译为委托myFuncExpr.Compile().每次调用时Compile,编译都会发生,因为表达式树是一种表示代码的方式(特别是C#代码),而不是代码本身.
另一方面,委托将使用程序集中的其余源代码编译一次.从编译器的角度来看,lambda只是声明方法体的另一种方式,即代码本身.因此,没有任何理由以不同的方式编译它.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |