Which of the N types of delegation statements do you like ?, Which of the following statements do you like?

Source: Internet
Author: User

Which of the N types of delegation statements do you like ?, Which of the following statements do you like?

Original article: http://www.cnblogs.com/FreeDong/archive/2013/07/31/3227638.html

1. Delegate call Method

1. Original Version:

 

delegate string PlusStringHandle(string x, string y);class Program{static void Main(string[] args){PlusStringHandle pHandle = new PlusStringHandle(plusString);Console.WriteLine(pHandle("abc", "edf"));Console.Read();}static string plusString(string x, string y){return x + y;}}

  


2. Original anonymous function version: remove the "plusString" method and change it

PlusStringHandle pHandle = new PlusStringHandle(delegate(string x, string y){return x + y;});Console.WriteLine(pHandle("abc", "edf"));

  


3. Use Lambda (C #3.0 +) and remove the "plusString" method (this method is not required for the following code)

PlusStringHandle pHandle = (string x, string y) =>{ return x + y;}; Console. writeLine (pHandle ("abc", "edf"); there are even more ways to write (Save the parameter type) PlusStringHandle pHandle = (x, y) ==>{ return x + y ;}; Console. writeLine (pHandle ("abc", "edf"); If there is only one parameter delegate void WriteStringHandle (string str); static void Main (string [] args) {// if there is only one parameter WriteStringHandle handle = p => Console. writeLine (p); handle ("lisi"); Console. read ();}

  

Ii. Delegation statement

1. For the original declaration method, see the Demo above.
2. directly use the generic delegate Func AND Action defined by. NET Framework to save the delegate declaration every time.

Static void Main (string [] args) {WritePrint <int> (p => Console. writeLine ("{0} is an integer", p), 10); Console. read ();} static void WritePrint <T> (Action <T> action, T t) {Console. writeLine ("type: {0}, value: {1}", t. getType (), t); action (t );}

  

3. Add an extension method to implement the so-called "chain programming.

Class Program {static void Main (string [] args) {string str = "All children's shoes :". plusString (p => p = p + "girl: lisi, lili \ r \ n "). plusString (p => p + "boy: wangwu"); Console. writeLine (str); Console. read () ;}} static class Extentions {public static string plusString <TParam> (this TParam source, Func <TParam, string> func) {Console. writeLine ("the original value before string addition is {0 }...... ", Source); return func (source );}}

  

Check whether this code is similar to the "list. Where (p => p. Age> 18)" We usually write? Yes, Where and other methods are implemented in a similar way.

Well, I have summarized it. If there are any omissions, I hope to make it up. I am very grateful to you.

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.