/// <Summary> /// crawler delegate /// </ Summary> /// <param name = "crawlerCode"> reptiles encoding </ param> the delegate void CrawlerDelegate (String crawlerCode); class Program { static void the Main ( String [] args) { { //.net Framework 1.0 primitive CrawlerDelegate crawlerDelegate = new new CrawlerDelegate (the Execute); crawlerDelegate.Invoke ( "crawling page. 1"); } { //.net Framework 2.0 anonymous method CrawlerDelegate crawlerDelegate = new CrawlerDelegate(delegate (string crawlerCode) { Console.WriteLine(crawlerCode); }); crawlerDelegate.Invoke ( "crawling on page 2"); } { //.net framework 3.0 Lambda = New new CrawlerDelegate crawlerDelegate CrawlerDelegate ((String crawlerCode) => {Console.WriteLine (crawlerCode);}); crawlerDelegate.Invoke ( "crawling p. 3"); } { //.net Framework 3.0 the Lambda parameter type may be omitted, parameters are calculated automatically, commonly known as "syntactic sugar" CrawlerDelegate crawlerDelegate new new CrawlerDelegate = ((crawlerCode) => {Console.WriteLine (crawlerCode);}); crawlerDelegate.Invoke ( "crawling p. 4"); } { //.net Framework 3.0 braces and semicolons if the Lambda method body is only one line, can be omitted = New new CrawlerDelegate crawlerDelegate CrawlerDelegate ((crawlerCode) => Console.WriteLine (crawlerCode)); crawlerDelegate.Invoke ( "crawling page. 5"); } { //.net Framework 3.0 omit the Lambda directly written to create an object, the compiler internal automatic wave processing crawlerDelegate crawlerDelegate = (crawlerCode) => Console.WriteLine (crawlerCode); crawlerDelegate.Invoke ( "crawling page. 6"); } the Console.ReadKey (); } /// <Summary> /// performed reptiles /// </ Summary> /// <param name = "crawlerCode"> reptiles encoding </ param> private static void Execute(string crawlerCode) { Console .WriteLine (crawlerCode); } /// <Summary> /// crawler actuator /// </ Summary> /// <param name = "crawlerContext"> Crawler context </ param> /// <param name="method">爬虫逻辑</param> static void CrawlerFerformer(CrawlerContext crawlerContext, CrawlerDelegate method) { method.Invoke(crawlerContext.CrawlerCode); } } /// <summary> /// 爬虫上下文 /// </summary> class CrawlerContext { /// <summary> /// 爬虫编码 /// </summary> public string CrawlerCode { get; set; } }