2011-05-17 85 views
8

只是遇到下面的代碼行,很難找到它的文檔,它是一個lambda expression?這是做什麼的?這個「Lambda Expression」是做什麼的?

temp = Regex.Replace(url, REGEX_COOKIE_REPLACE,match => cookie.Values[match.Groups["CookieVar"].Value]); 

特別感興趣的=>

+0

它的[此重載(http://msdn.microsoft.com/en-us/library/ht1sxswy評估。 aspx) - 這是一個lambda,是的,指定[MatchEvaluator委託](http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchevaluator.aspx)。 – Rup 2011-05-17 09:21:24

回答

9

如果你看一下更換文檔,第三個參數是一個MatchEvaluator

http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchevaluator.aspx

這是需要一個Match作爲參數,並返回字符串替換它的委託。您的代碼是使用lambda表達式限定MatchEvaluator

match => cookie.Values[match.Groups["CookieVar"].Value] 

在此,對於每個匹配,該正則表達式發現,在值被在cookie.Values詞典查找並且結果被用作替換。

7
match => cookie.Values[match.Groups["CookieVar"].Value] 

是一個捷徑

delegate (Match match) 
{ 
    return cookie.Values[match.Groups["CookieVar"].Value]; 
} 
1

RegEx.Replace爲運行在urlREGEX_COOKIE_REPLACE每場比賽的Lambda和「取代」了與之相匹配的lambda表達式的結果。

拉姆達(或簡寫代表)

match => cookie.Values[match.Groups["CookieVar"].Value] 

使用「CookieVar」的Match,Group,Value查找替換的cookie.Values收藏。查找值取代了匹配。

要告訴你更多關於「CookieVar」組中,我們需要看到的REGEX_COOKIE_REPLACE.