Roy*_*mir 3 c# lambda .net-4.0 expression-trees
我正在读Jon Skeet的书.(表达式树章节)它有一个用lambda表达式创建表达式树的例子:
Expression<Func<string, string, bool>> expression = (x, y) => x.StartsWith(y);
var compiled = expression.Compile();
Console.WriteLine(compiled("First", "Second"));
Console.WriteLine(compiled("First", "Fir"));
Run Code Online (Sandbox Code Playgroud)
现在他对表达式树做了同样的事情:

题 :
在黄色部分已经包括PARAMS信息!
为什么我必须在那些参数的蓝色部分指定AGAIN ?
我想你的问题是:
为什么不能
Expression.Lambda检查整个表达式主体的参数表达式,然后将它们用作表达式参数,这使我免于在Lambda调用中明确地将它们再次移交的麻烦?
嗯,它肯定可以,但是在一般情况下它怎么知道以什么 顺序接受这些参数?
在您的示例中,它将如何知道是否生成表达式 - 相当于:
(x, y) => x.StartsWith(y)
Run Code Online (Sandbox Code Playgroud)
(要么)
(y, x) => x.StartsWith(y)?
Run Code Online (Sandbox Code Playgroud)
你应该lambda.Compile()("42", "4")回来true还是false?
在一般情况下,它不能代表您做出这些决定.
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |