8

次のコード行に出くわし、そのドキュメントを見つけるのに苦労していlambda expressionますか?これは何をしますか?

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

特にに興味があり=>ます。

4

3 に答える 3

9

Replaceのドキュメントを見ると、3番目の引数はMatchEvaluator:です。

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

Matchこれは、引数としてaを取り、それを置き換える文字列を返すデリゲートです。あなたのコードはMatchEvaluatorラムダ式を使用してを定義しています:

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

ここでは、正規表現が検出した一致ごとに、値がcookie.Values辞書で検索され、その結果が置換として使用されます。

于 2011-05-17T09:22:38.200 に答える
7
match => cookie.Values[match.Groups["CookieVar"].Value]

へのショートカットです

delegate (Match match)
{
    return cookie.Values[match.Groups["CookieVar"].Value];
}
于 2011-05-17T09:22:41.640 に答える
1

は、 inRegEx.Replaceのすべての一致に対してラムダを実行し、一致をラムダの結果に「置き換え」ます。REGEX_COOKIE_REPLACEurl

ラムダ(または省略形のデリゲート)

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

Valueの「CookieVar」Group,のを使用して、コレクションMatch,内の置換を検索します。cookie.Valuesルックアップ値が一致を置き換えます。

「CookieVar」グループについて詳しく説明するには、次の評価を確認する必要があります。REGEX_COOKIE_REPLACE.

于 2011-05-17T09:36:08.253 に答える