只是遇到下面的代碼行,很難找到它的文檔,它是一個lambda expression
?這是做什麼的?這個「Lambda Expression」是做什麼的?
temp = Regex.Replace(url, REGEX_COOKIE_REPLACE,match => cookie.Values[match.Groups["CookieVar"].Value]);
特別感興趣的=>
。
只是遇到下面的代碼行,很難找到它的文檔,它是一個lambda expression
?這是做什麼的?這個「Lambda Expression」是做什麼的?
temp = Regex.Replace(url, REGEX_COOKIE_REPLACE,match => cookie.Values[match.Groups["CookieVar"].Value]);
特別感興趣的=>
。
如果你看一下更換文檔,第三個參數是一個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
詞典查找並且結果被用作替換。
match => cookie.Values[match.Groups["CookieVar"].Value]
是一個捷徑
delegate (Match match)
{
return cookie.Values[match.Groups["CookieVar"].Value];
}
的RegEx.Replace
爲運行在url
REGEX_COOKIE_REPLACE
每場比賽的Lambda和「取代」了與之相匹配的lambda表達式的結果。
拉姆達(或簡寫代表)
match => cookie.Values[match.Groups["CookieVar"].Value]
使用「CookieVar」的Match,
的Group,
的Value
查找替換的cookie.Values
收藏。查找值取代了匹配。
要告訴你更多關於「CookieVar」組中,我們需要看到的REGEX_COOKIE_REPLACE.
它的[此重載(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