Что делает это «Лямбда-выражение»? - PullRequest
8 голосов
/ 17 мая 2011

Просто наткнитесь на следующую строку кода и не можете найти документацию для него, это lambda expression?Что это делает?

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

Особенно интересует =>.

Ответы [ 3 ]

9 голосов
/ 17 мая 2011

Если вы посмотрите документацию для Replace, третий аргумент будет MatchEvaluator:

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

Это делегат, который принимает Match в качестве аргумента и возвращает строку для его замены. Ваш код определяет MatchEvaluator с помощью лямбда-выражения:

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

Здесь для каждого совпадения, которое находит регулярное выражение, в словаре cookie.Values ищется значение, а результат используется в качестве замены.

7 голосов
/ 17 мая 2011
match => cookie.Values[match.Groups["CookieVar"].Value]

является ярлыком для

delegate (Match match)
{
    return cookie.Values[match.Groups["CookieVar"].Value];
}
1 голос
/ 17 мая 2011

RegEx.Replace запускает лямбду для каждого совпадения REGEX_COOKIE_REPLACE в url и «заменяет» совпадение на результат лямбды.

Лямбда (или сокращенный делегат)

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

использует Value из CookieVar Group, из Match,, чтобы найти замену в коллекции cookie.Values.Значение поиска заменяет совпадение.

Чтобы рассказать вам больше о группе "CookieVar", нам нужно увидеть оценку REGEX_COOKIE_REPLACE.

...