这个“Lambda Expression”有什么作用?

时间:2011-05-17 09:18:36

标签: c# .net c#-4.0 matchevaluator

刚刚遇到以下代码行并且难以找到它的文档,它是lambda expression吗?这是做什么的?

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

=>特别感兴趣。

3 个答案:

答案 0 :(得分:9)

如果查看Replace的文档,第3个参数是MatchEvaluator

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

这是一个委托,它将Match作为参数并返回用它替换的字符串。您的代码使用lambda表达式定义MatchEvaluator

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

在这里,对于Regex找到的每个匹配,正在cookie.Values字典中查找一个值,结果将被用作替换。

答案 1 :(得分:7)

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

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

答案 2 :(得分:1)

RegEx.ReplaceREGEX_COOKIE_REPLACEurl的每个匹配运行lambda,并将该匹配替换为lambdas结果。

lambda(或速记代表)

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

使用Value的“CookieVar”Group,的{​​{1}}来查找Match,集合中的替换。查找值将替换匹配。

为了告诉您有关“CookieVar”组的更多信息,我们需要查看对cookie.Values的评估