Объяснение этого кода - PullRequest
1 голос
/ 30 июня 2011

Я только что наткнулся на следующий код, который не могу понять:

var dataItem = (SportNode)item.DataItem;
item.FindControl<Literal>("Node", image =>
    image.Text = string.Format("<li data-nodeId='{1}' class='{0}'><a href='/sport?navItems={3}'>{2}</a></li>", "top",
    dataItem.NodeId, dataItem.Text, dataItem.NodeId));

В частности, откуда берется изображение? Это нигде не объявлено, но, похоже, имеет тип. Я, конечно, не вижу этого ни в одном из родительских классов.

Ответы [ 3 ]

4 голосов
/ 30 июня 2011

«изображение» - это входной параметр лямбда-выражения.

Подробнее о лямбдах здесь .

Для более удобного и понятного взгляда на лямбды, Скотт Гатри (Great Scott Guthrie) опубликовал отличную статью, представляющую их .

2 голосов
/ 30 июня 2011

Изображение здесь является параметром для анонимной функции - он получает свой тип из сигнатуры того, во что вы его передаете; например:

    private void PrintResult(Func<Int32, Int32> f)
    {
        Debug.WriteLine(f.Invoke(1));
    }

    //In some other method
    PrintResult(n => n + 2); //prints 3

Вы можете посмотреть больше об этом, если хотите - я бы поискал "лямбда-выражение" или "анонимная функция".

1 голос
/ 30 июня 2011

Это анонимный метод. image - имя параметра этого метода. Тип image выводится из второго параметра FindControl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...