次のコード行に出くわし、そのドキュメントを見つけるのに苦労していlambda expressionますか?これは何をしますか?
temp = Regex.Replace(url, REGEX_COOKIE_REPLACE,match => cookie.Values[match.Groups["CookieVar"].Value]);
特にに興味があり=>ます。
次のコード行に出くわし、そのドキュメントを見つけるのに苦労していlambda expressionますか?これは何をしますか?
temp = Regex.Replace(url, REGEX_COOKIE_REPLACE,match => cookie.Values[match.Groups["CookieVar"].Value]);
特にに興味があり=>ます。
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辞書で検索され、その結果が置換として使用されます。
match => cookie.Values[match.Groups["CookieVar"].Value]
へのショートカットです
delegate (Match match)
{
return cookie.Values[match.Groups["CookieVar"].Value];
}
は、 inRegEx.Replaceのすべての一致に対してラムダを実行し、一致をラムダの結果に「置き換え」ます。REGEX_COOKIE_REPLACEurl
ラムダ(または省略形のデリゲート)
match => cookie.Values[match.Groups["CookieVar"].Value]
Valueの「CookieVar」Group,のを使用して、コレクションMatch,内の置換を検索します。cookie.Valuesルックアップ値が一致を置き換えます。
「CookieVar」グループについて詳しく説明するには、次の評価を確認する必要があります。REGEX_COOKIE_REPLACE.