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.