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

匿名方法:經過匿名委託 、lamada表達式定義的函數具體操做並複製給委託類型;app

匿名委託:委託的一種簡單化聲明方式經過delegate關鍵字聲明;ide

內置泛型委託:系統已經內置的委託類型主要是不帶返回值的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);
           };

        }

運行測試代碼this

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!");
        }

運行結果spa


  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 
相關文章
相關標籤/搜索