在看C#中的Lambda表達式之前,先來看一個概念:匿名方法。學過Java的親們,可能對這個概念比較了解。Java JDK8中也引入了Lambda表達式。
下面看看C#中的匿名函數。下面是一個實例:
namespace ConsoleApplication
{
class AnonymousMethod
{
public static void Main()
{
String name = "周傑倫";
/*
* Func<String, String>委托接受一個字符串參數,返回一個字符串。sayHello是這種委托類型的變量。
* 可以看到,這裡不是把方法名賦予這個變量,而是使用一段簡單的代碼:
* 它前面是關鍵字delegate,後面是一個字符串參數,然後是方法的實現,最後以分號結束。
*/
Func<String, String> sayHello = delegate(String param)
{
String greeting = "你好," + param + "!我們喜歡你的歌!";
return greeting;
};
Console.WriteLine(sayHello(name));
}
}
}
運行結果如下:
從C#3.0開始,可以使用Lambda表達式替代匿名方法。
下面我們看看上面的例子,改寫成Lambda表達式版本的是什麼模樣:
namespace ConsoleApplication
{
class LambdaExpression
{
public static void Main()
{
String name = "周傑倫";
/*
* Func<String, String>委托接受一個字符串參數,返回一個字符串。sayHello是這種委托類型的變量。
* Lambda運算符“=>”的左邊列出了需要的參數。
* Lambda運算符的右邊定義了賦予Lambda變量的方法的實現代碼。
* 怎麼樣?是不是很簡單!
*/
Func<String, String> sayHello = param =>
{
String greeting = "你好," + param + "!我們喜歡你的歌!";
return greeting;
};
Console.WriteLine(sayHello(name));
}
}
}