Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I rewrite a lambda expression in C# 2.0?

Tags:

c#

MatchEvaluator evaluator = (match) =>
            {
                var splitPos = match.Value.IndexOf("=\"");
                var newValue = match.Value.Substring(0, splitPos + 2) +
                    "RetrieveBuildFile.aspx?file=" +
                    prefix +
                    match.Value.Substring(splitPos + 2);
                return newValue;
            };

What does this code mean , I need to port this code which is in VS 2008 to VS 2005, the same is not available in VS 2005

like image 876
Pushparaj Avatar asked Apr 11 '11 10:04

Pushparaj


1 Answers

c# 2.0 supports the delegate keyword, so it could be rewritten into this:

MatchEvaluator evaluator = delegate(Match match) {
    int splitPos = match.Value.IndexOf("=\"");
    string newValue = match.Value.Substring(0, splitPos + 2) +
                        "RetrieveBuildFile.aspx?file=" +
                        prefix +
                        match.Value.Substring(splitPos + 2);
    return newValue;
};

And this is exactly the same as this:

static string OnEvaluator(Match match) {
   int splitPos = match.Value.IndexOf("=\"");
   string newValue = match.Value.Substring(0, splitPos + 2) + 
       "RetrieveBuildFile.aspx?file=" + 
       prefix + 
       match.Value.Substring(splitPos + 2);
   return newValue;
}

called with:

MatchEvaluator evaluator = OnEvaluator;

And what it is?

MSDN: Represents the method that is called each time a regular expression match is found during a Replace method operation.

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

like image 137
Mikael Östberg Avatar answered Nov 14 '22 02:11

Mikael Östberg