【问题标题】:What does this "Lambda Expression" do?这个“Lambda 表达式”有什么作用?
【发布时间】:2011-05-17 09:18:35
【问题描述】:

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

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

=>特别感兴趣。

【问题讨论】:

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


【解决方案1】:

如果您查看 Replace 的文档,第三个参数是 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 字典中查找一个值,并将结果用作替换。

【讨论】:

    【解决方案2】:
    match => cookie.Values[match.Groups["CookieVar"].Value]
    

    是一个快捷方式

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

    【讨论】:

      【解决方案3】:

      RegEx.Replaceurl 中的每个 REGEX_COOKIE_REPLACE 匹配运行 lambda,并用 lambda 结果“替换”匹配。

      lambda(或速记委托)

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

      使用Match,的“CookieVar”Group,Valuecookie.Values集合中查找替换。查找值替换匹配项。

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

      【讨论】:

        猜你喜欢
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-29
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多