2011-05-14 57 views

回答

9

甲lambda表達式,簡單地說,可重複使用的表達,這需要數目的參數:

x => x + 1; 

上述表達式讀取「對於一個給定的x,返回X + 1」。

在.NET中,這是強大的,因爲它可以被編譯成一個匿名委託,你可以用你的代碼內嵌聲明和評價一個匿名函數來獲得一個值:

int number = 100; 

Func<int, int> increment = x => x + 1; 

number = increment(number); // Calls the delegate expression above. 

然而,真正的lambda表達式的強大之處在於它可以用來初始化表達式本身的內存表示。

Expression<Func<int, int>> incrementExpression = x => x + 1; 

這意味着,你可以給表達類似的LINQ to SQL,它可以理解的表達意味着,將其轉化爲具有相同含義的SQL語句。這就是lambda與正常方法和代表非常不同的地方,通常是混亂開始的地方。

2

一個小的無名內聯方法。這對你來說基本夠用嗎?我不確定你在找什麼。

您還在「外行」的術語說 - 我相信你有軟件開發經驗,一定程度(所以不是一個完整的外行)

+1

如果你通過類似Reflector的東西來看代碼,那麼它是一種方法。我想你可以象VB一樣將子方法分爲子例程(無返回值)和函數(返回值)。但是,lambda不需要返回值。例如,與Parallel.For一起使用的lambdas不返回值,因爲它們映射到Action <...>而不是Func <...> – 2011-05-14 11:57:30

+0

我的錯誤 - 正確刪除了Colin。 – 2011-05-14 11:59:08

3

Lambda表達式是具有不同的語法規則的功能,內聯函數。

示例用於平方數的Lambda表達式。

x => x * x 
1

在非函數式編程語言中,表達式(對變量起作用)執行計算並執行一次這些計算。

Lambda表達式允許您通過可以在列表中工作的不同語法代碼定義(在表達式中),並且可以在概念上將其視爲函數。


你可以簡化它來說「他們讓你在表達式中定義函數」。


不太理解「爲什麼」。在我看來,爲什麼更有趣。 Lambda表達式允許對函數和部分函數進行操作。

+0

「你可以簡化說」他們讓你在表達式中定義函數「。」這就是我期待的! – dennis 2011-05-14 12:10:38