2011-04-11 11 views
5
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; 
      }; 

क्या इस कोड का क्या मतलब है, मैं इस कोड है जो वी.एस. 2005 तक वी.एस. 2008 में है बंदरगाह की जरूरत है, एक ही वी.एस. में उपलब्ध नहीं 2005मैं सी # 2.0 में लैम्ब्डा अभिव्यक्ति को फिर से लिखूं?

उत्तर

9

C# 2.0, delegate कीवर्ड का समर्थन करता है तो यह फिर से लिखा जा सकता है इस में:

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; 
} 

साथ कहा जाता है:

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; 
}; 

और यह इस रूप में बिल्कुल वैसा ही है

MatchEvaluator evaluator = OnEvaluator; 

और यह क्या है?

एमएसडीएन: प्रत्येक विधि को नियमित रूप से अभिव्यक्ति मिलान के दौरान एक नियमित अभिव्यक्ति मिलान के रूप में संदर्भित किया जाता है।

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

+1

'var' भी VS2008 केवल है - जब VS2005 में इस निर्माण आप' var' वास्तविक प्रकार, उदाहरण के साथ बदलने के लिए की आवश्यकता होगी पहले मामले में 'int' और दूसरे में' स्ट्रिंग '(मुझे लगता है)। – Justin

+0

आप सही हैं, उसको याद किया। उदाहरण अपडेट करेंगे। –

संबंधित मुद्दे