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

本文关键字:lambda 表达式 代码 | 更新日期: 2023-09-27 17:52:48

<%= MyClass.GetData(() => new[] { Html.TextBox(prefix + "Postcode", Customer.ZipCode, new { maxlength = 7 }), Html.ValidationIcon(prefix + "ZipCode") })%>
谁能给我解释一下MyClass是什么?GetData方法是否作为参数传递?

我不期待一个完整的解释,我知道我应该进一步学习匿名方法和lambda表达式…但是现在您能解释一下来自"()=>......."的代码是什么意思吗?

如果你知道一些有助于理解这类材料的好文章,那就太棒了!

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

The () => new[]{…}是一个lambda表达式,它是匿名委托的简写语法。这意味着你传递的基本上相当于一个指向不带参数的函数的指针,()部分指示参数,并以{}括号(Html.TextBox....)返回结果等等)。

从本质上讲,这相当于传递一个方法名来完成同样的事情,但它的语法更简洁:
MyClass.GetData(() => new[] { Html.TextBox(prefix + "Postcode", Customer.ZipCode, new { maxlength = 7 }), Html.ValidationIcon(prefix + "ZipCode") }

大致相当于创建一个方法,然后传入该方法名。

private WebControl[] GetControls()
{
    return new[] { Html.TextBox(prefix + "Postcode", Customer.ZipCode, new { maxlength = 7 }), Html.ValidationIcon(prefix + "ZipCode");
}

MyClass.GetData(GetControls);

注。下面是一个很好的lambda基础教程:http://blogs.msdn.com/b/ericwhite/archive/2006/10/03/lambda-expressions.aspx

() =>表示不带任何参数的lambda。因此,您正在向GetData传递一个lambda,该lambda不接受任何参数,并返回一个新数组。

意思是:这是一个匿名委托,它不接受参数,返回一个对象数组,其类型将从Html.TextBox()Html.ValidationIcon() 的返回值推断。