2011-06-30 88 views
1

我刚刚碰到下面的代码,我无法理解:这段代码的说明

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)); 

特别是,在没有图像从何而来?它没有在任何地方声明,但似乎还没有类型。我当然无法在任何父类中看到它。

回答

1

这是匿名的方法。 image是此方法的参数的名称。从FindControl的第二个参数推断出image的类型。

2

图片,在这里,是参数的匿名函数 - 它获得无论从任何你正在传递到签名的类型;例如:

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

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

您可以查找更多关于这一点,如果你想 - 我搜索“Lambda表达式”或“匿名函数”。