请指导我获取以下行c#lambda表达式代码

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表达式...但是现在你可以解释代码是什么,从"()=> ......."手段?

如果你知道一些很好的文章,建立在理解这样的材料,那将是很酷的!

Jam*_*are 5

()=> 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