2011-06-30 127 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表達式」或「匿名函數」。