我刚刚遇到以下代码,我无法理解:
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));
特别是,图像来自哪里?它没有在任何地方宣布似乎有类型。我当然无法在任何父类中看到它。
答案 0 :(得分:4)
“image”是lambda表达式的输入参数。
阅读有关lambdas here的更多信息。
为了更加可读和深入地了解lambdas,Scott Guthrie has a great post introducing them。
答案 1 :(得分:2)
Image,这里是匿名函数的参数 - 它从你传递给它的任何东西的签名中派生出它的类型;例如:
private void PrintResult(Func<Int32, Int32> f)
{
Debug.WriteLine(f.Invoke(1));
}
//In some other method
PrintResult(n => n + 2); //prints 3
如果您愿意,可以查看更多相关信息 - 我会搜索“Lambda表达式”或“匿名函数”。
答案 2 :(得分:1)
这是一种匿名方法。 image
是此方法的参数名称。 image
的类型是从FindControl
的第二个参数推断出来的。