這篇文章主要為大家展示了“Lambda表達式和匿名方法有哪些區(qū)別”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Lambda表達式和匿名方法有哪些區(qū)別”這篇文章吧。

其實,Lambda表達式和匿名方法沒多大區(qū)別,它們根本就是一件事。要說唯一的區(qū)別就是:他們語法表現(xiàn)形式不同。Lambda 表達式是在語法方面的更進一步的進化,僅此而已。因此我們要了解Lambda表達式就應該同時也了解匿名方法。
下面先看一個簡單的代碼例子,分別用匿名方法和Lambda 表達式來實現(xiàn)對數(shù)組的搜索:
使用 .net 2.0 的匿名方法來搜索字符串數(shù)組中包含 a 的字符串數(shù)組
static void Main(string[] args)
{
string[] list = new string[] { "abc", "12", "java" };
string[] ll = Array.FindAll(list,
delegate(string s)
{
return s.IndexOf("a") >= 0;
}
);
foreach (string var in ll)
{
Console.WriteLine(var);
}
Console.ReadLine();
}
使用 .net 3.5 的Lambda表達式來搜索字符串數(shù)組中包含 a 的字符串數(shù)組
static void Main(string[] args)
{
string[] list = new string[] { "abc", "12", "java" };
string[] ll = Array.FindAll(list, s => (s.IndexOf("a") >= 0));
foreach (string var in ll)
{
Console.WriteLine(var);
}
Console.ReadLine();
}
從上述兩個例子我們可以看出:
從代碼書寫角度,代碼可讀性角度來說:Lambda表達式 比匿名方法更簡單了。
而 Lambda表達式 和 匿名方法都是干的同一件事情,讓我們少寫一個函數(shù)定義。函數(shù)的調用和函數(shù)的實現(xiàn)在一起完成了。
Lambda表達式的書寫格式如下:
(參數(shù)列表) => 表達式或者語句塊
其中:
參數(shù)個數(shù):可以有多個參數(shù),一個參數(shù),或者無參數(shù)。
參數(shù)類型:可以隱式或者顯式定義。
表達式或者語句塊:這部分就是我們平常寫函數(shù)的實現(xiàn)部分(函數(shù)體)。
一些Lambda表達式的書寫范例:
有兩個參數(shù)的 Lambda表達式例子:
注:別看比較復雜,LINQ中實際把 下述代碼中的 delegate ,DoSomeThing 替你做了,所以你寫代碼的時候只需要寫
vart = DoSomeThing(7, 8, (x, y) => x * y); 這么一行。
public delegate T HongJunGuoTest01(T t1, T t2);
class Program
{
private static T DoSomeThing(T t1,T t2,HongJunGuoTest01 match)
{
return match(t1, t2);
}
static void Main(string[] args)
{
var t = DoSomeThing(7, 8, (x, y) => x * y);
Console.WriteLine(t);
Console.ReadLine();
}
}
下面這些寫法也是對的(你只需要修改Main函數(shù)中的代碼,其他地方不需要動):
var t = DoSomeThing(7, 8, (int x, int y) => x * y);
var t = DoSomeThing("7", "8", ( x, y) => x + y);
或者我們寫一個更復雜的: => 右邊是一段語句塊。
var t = DoSomeThing(7, 8, (x, y) => { if (x < 5) { return (x + 8) * y; } else { return y; } });
最前面的例子是一個參數(shù)的例子,我們就不舉一個參數(shù)的例子了,下面舉一個沒有參數(shù)的例子:
public delegate void HongJunGuoTest02();
class Program
{
private static void DoSomeThing(HongJunGuoTest02 match)
{
match();
}
static void Main(string[] args)
{
DoSomeThing(() => Console.WriteLine("jajaja"));
Console.ReadLine();
}
}
以上是“Lambda表達式和匿名方法有哪些區(qū)別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
                新聞標題:Lambda表達式和匿名方法有哪些區(qū)別-創(chuàng)新互聯(lián)
                
                文章URL:http://chinadenli.net/article12/gcjdc.html
            
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、微信小程序、外貿建站、搜索引擎優(yōu)化、關鍵詞優(yōu)化、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)