c# 匿名方法(函數) 匿名委托 內置泛型委托 lamada


匿名方法:通過匿名委托 、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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM