匿名方法:通過匿名委托 、lamada表達式定義的函數具體操作並複製給委托類型;匿名委托:委托的一種簡單化聲明方式通過delegate關鍵字聲明;內置泛型委托:系統已經內置的委托類型主要是不帶返回值的Action和帶返回值的Func實例代碼(運行環境netcoreapp3.1)class demoF... ...
匿名方法:通過匿名委托 、lamada表達式定義的函數具體操作並複製給委托類型;
匿名委托:委托的一種簡單化聲明方式通過delegate關鍵字聲明;
內置泛型委托:系統已經內置的委托類型主要是不帶返回值的Action<T1,,,,Tn>和帶返回值的Func<T1,,,Tn,Tresult>
實例代碼(運行環境netcoreapp3.1)
class demoFunc { /// <summary> /// 定義函數單條語句直接用lamada表達式 /// </summary> /// <param name="x"></param> public void funcA( string x)=> Console.WriteLine("this is funcA!{0}",x); /// <summary> /// 使用內置泛型委托action(返回值為void) 定義委托類型成員變數,並通過那lamada定義匿名函數 /// </summary> public Action<string> funcB= x => Console.WriteLine("this is funcB!{0}", x); /// <summary> /// 使用內置泛型委托action(返回值為void) 定義委托類型成員變數, /// 並通過匿名委托定義匿名函數 /// </summary> public Action<string> FuncB_1= delegate(string s) { Console.WriteLine("this is funcB_1!{0}", s); }; /// <summary> /// 定義委托類型 /// </summary> /// <param name="s"></param> public delegate void TFuccB_2(string s); /// <summary> /// 使用匿名函數聲明委托 /// </summary> public TFuccB_2 FuncB_2= delegate(string s) { Console.WriteLine("this is funcB_2!{0}", s); }; /// <summary> /// 使用內置泛型委托func(返回值不可以為void,參數列表中最後一個時返回值), /// 定義委托類型成員變數,並通過lamada定義單含帶返回值的匿名函數 /// 單行表達式的返回值就是此匿名函數的返回值 /// </summary> public Func<string, string> funcC=x=> string.Format("this is funcC!{0}", x); /// <summary> /// 使用內置泛型委托func(返回值不可以為void),定義委托類型成員變數, /// 並通過lamada定義多行代碼的匿名函數 /// </summary> public Func<string,string, string> funcD= (x1, x2) => { Console.WriteLine("this is funcd!{0}{1}", x1, x2); return string.Format("this is funcd!{0}{1}", x1, x2); }; }
運行測試代碼
static void Main(string[] args) { demoFunc demo=new demoFunc(); demo.funcA("a"); demo.funcB("b"); demo.FuncB_1("b"); demo.FuncB_2("b"); Console.WriteLine(demo.funcC("c")); Console.WriteLine(demo.funcD("d1","d2")); Console.WriteLine("Hello World!"); }
運行結果
1 "C:\Program Files\dotnet\dotnet.exe" C:/Users/edzjx/RiderProjects/testDemo/testDemo/bin/Debug/netcoreapp3.1/testDemo.dll 2 this is funcA!a 3 this is funcB!b 4 this is funcB_1!b 5 this is funcB_2!b 6 this is funcC!c 7 this is funcd!d1d2 8 this is funcd!d1d2 9 Hello World! 10 11 Process finished with exit code 0. 12