- Action 和 Func 委托 的区别
Action 没有返回值,Func 有返回值,通常是最后一个参数 - 简单使用Action 和 Func
//不带参数 Action huaweiAction = new Action(Huawei); huaweiAction(); void Huawei() { Console.WriteLine($"我爱华为"); } //带参数 Action<string> iphoneAction = new Action<string>(Iphone); iphoneAction("iphone 12 mini"); void Iphone(string iphone) { Console.WriteLine($"我爱{iphone}"); }
//不带参数,带返回值string Func<string> huaweiFunc = new Func<string>(HuaweiFunc); huaweiFunc(); string HuaweiFunc() { return "摄像头不好"; } //带参数int Func<string,int> iphoneFunc = new Func<string,int >(IphoneFunc); IphoneFunc("iphone 12 mini"); int IphoneFunc(string iphone) { Console.WriteLine($"我爱{iphone}"); return 10; }
- Action 和 Func 参数化
int a = 1; var b = a.StrSetingAction( //1 (x) => { Console.WriteLine(x);//3 // x.InTstring(1); } ); Console.WriteLine($"StrSetingAction:{b}"); public static int StrSetingAction(this int manger, Action<string> config) { config("Action参数");//2 执行Action 方法,来自于参数config参数 return 999;//4 }
var b1 = a.StrSetingFunc(//1 (x, y) => { Console.WriteLine($"x:{x},y:{y}");//3 return 10; } ); Console.WriteLine($"StrSetingFunc返回值:{b1}"); public static int StrSetingFunc(this int manger, Func<string,bool,int> config) { var result= config("Func参数", true);//无需要把其赋给相应对象 Console.WriteLine($"result:{result}");//3 return 888; }