我以Lambda表達式開始瞭解如何定義使用它的匿名方法。Lambda表達式中的多個句子
我有以下簡單的代碼:
delegate void AddNumber(int number);
class LambdaExpressionSample
{
static void Main(string[] args)
{
AddNumber method = r => Console.WriteLine(r + r);Console.Read();
method(1);
}
}
我想的是,該方法將等於這個:
AddNumber method = new AddNumber(delegate(int number)
{
Console.WriteLine(number+number);
Console.Read();
});
但與lambda表達式的代碼無法正常工作因爲lambda表達式顯然以分號「;」結束在Console.WriteLine之後。
我如何使我的方法執行Console.WriteLine和Console.Read使用我的lambda示例?
正如其他人已經回答,你只需要在這裏一些花括號。 – 2012-08-03 08:31:24
很少有必要像這裏一樣製作委託類型。如果你使用的是局部變量,'var'語法可能是最好的方法。對於明確的類型(例如方法參數),我會使用Func <>和Action <>類型。這裏你有一個動作,因爲沒有返回類型,所以你會說'動作'而不是'AddNumber'。調用這個委託'AddNumber'意味着它做了什麼,但是這種類型沒有任何意義。我更喜歡讓類型描述委託的簽名,並將變量的名稱賦予其含義。 –
2012-08-03 08:39:50