Пожалуйста, помогите мне получить следующую строку C # лямбда-код выражения - PullRequest
3 голосов
/ 21 апреля 2011
<%= MyClass.GetData(() => new[] { Html.TextBox(prefix + "Postcode", Customer.ZipCode, new { maxlength = 7 }), Html.ValidationIcon(prefix + "ZipCode") })%>

Может кто-нибудь объяснить, что метод MyClass.GetData передается в качестве параметра?

Я не ожидаю подробного объяснения и знаю, что мне следует изучить анонимные методы и лямдуВыражение ... Но сейчас вы можете объяснить, что означает код из "() => ......."?

И если вы знаете несколько хороших статей, которые направлены на понимание материала, такого какэто было бы круто!

Ответы [ 3 ]

5 голосов
/ 21 апреля 2011

() => new [] {...} является лямбда-выражением, которое является сокращенным синтаксисом для анонимного делегата.Это означает, что вы передаете по существу эквивалент указателя на функцию, которая не принимает аргументов, часть () указывает аргументы и возвращает результаты в {} фигурных скобках (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);

ps Вот хороший базовый урок по лямбде: http://blogs.msdn.com/b/ericwhite/archive/2006/10/03/lambda-expressions.aspx

2 голосов
/ 21 апреля 2011

Это означает: Это анонимный делегат , который не принимает аргументов и возвращает массив объектов, тип которых будет выведен из возвращаемых значений Html.TextBox() иHtml.ValidationIcon().

2 голосов
/ 21 апреля 2011

() => означает лямбду, которая не принимает никаких параметров. Итак, вы передаете в GetData лямбду, которая не принимает параметров и возвращает новый массив.

...