Her*_*art 3 c# lambda anonymous-methods
<%= MyClass.GetData(() => new[] { Html.TextBox(prefix + "Postcode", Customer.ZipCode, new { maxlength = 7 }), Html.ValidationIcon(prefix + "ZipCode") })%>
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下MyClass.GetData方法作为参数传递了什么吗?
我不期待一个完整的解释,我知道我应该进一步学习anonyous方法和lamda表达式...但是现在你可以解释代码是什么,从"()=> ......."手段?
如果你知道一些很好的文章,建立在理解这样的材料,那将是很酷的!
()=> new [] {...}是一个lambda表达式,它是匿名委托的简写语法.这意味着你传递的函数实际上相当于一个不带参数的函数的指针,()部分表示参数,并在{}大括号(Html.TextBox ....等)中返回结果.
从本质上讲,这相当于传递一个完成相同的事情的方法名称,但它更简洁的语法:
MyClass.GetData(() => new[] { Html.TextBox(prefix + "Postcode", Customer.ZipCode, new { maxlength = 7 }), Html.ValidationIcon(prefix + "ZipCode") }
Run Code Online (Sandbox Code Playgroud)
大致相同,创建一个方法,然后传递该方法名称.
private WebControl[] GetControls()
{
return new[] { Html.TextBox(prefix + "Postcode", Customer.ZipCode, new { maxlength = 7 }), Html.ValidationIcon(prefix + "ZipCode");
}
Run Code Online (Sandbox Code Playgroud)
....
MyClass.GetData(GetControls);
Run Code Online (Sandbox Code Playgroud)
ps这是一个很好的基本lambda教程:http://blogs.msdn.com/b/ericwhite/archive/2006/10/03/lambda-expressions.aspx
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |