2010-01-01 30 views
3

我正在瀏覽MVC項目中的示例asp.net代碼,需要更好地瞭解=>操作符。堵塞=>搜索引擎是沒有幫助的。尋求'=>'操作符的概述

THX

+0

這是一個騙局... – 2010-01-01 14:09:23

+1

他怎麼能找到:) – JCasso 2010-01-01 17:36:28

+0

thx ....我沒有嘗試搜索SO - 不知道Lambda連接。 – justSteve 2010-01-03 10:58:01

回答

5

=>語法創建lambda expressions,這是小函數。

例如,線

Func<int, int> myFunc = i => 2 * i; 

聲明Func<int, int>類型(委託,它有一個整數並返回另一個)的一個變量,並將其分配給一個lambda表達式,需要一個叫做i參數(編譯器自動計算出iint)並返回2 * i

3

如上所述,=>運算符表示lambda表達式。這對匿名代表而言是短暫的。下面是實際的例子:

如果要篩選集合中的所有Person對象返回唯一的男人,其中()擴展方法需要一個Func鍵代表你可以創建一個名爲委託這樣的:

Func<Person, bool> isMale = delegate(Person peep) { return peep.Gender == "male"; }; 
    var men = from p in peeps.Where(isMale) 
       select p; 

或者你可以使用匿名委託這樣的:

var women = from p in peeps.Where(delegate(Person peep) { return peep.Gender != "male"; }) 
       select p; 

拉姆達允許您使用速記申報匿名委託,像這樣:

var women = from p in peeps.Where(x => x.Gender != "male") 
       select p; 

請注意delegate(Person peep)x之間的對應關係,以及'返回peep.Gender!=「男性」and 'x.Gender != "male"之間的對應關係。