天天看點

匿名方法

匿名方法或者匿名對象,顧名思義在定義方法或者對象是不進行具體的命名。

如var object=new{ID=“01”,Name="02"};則表示定義了一個對象,其含有ID和name,可以通過obj.ID進行相關通路。

匿名方法與其類似,即不用方法名字,直接對方法進行定義,匿名方法一般用在此方法引用較少,但是又需要是一個方法,如線程或者委托時。如下:

Mydelegate de =delegate(string str)//此處相當于用delegate代替函數名,同時進行函數體構造
            {
                Console.WriteLine(str);
            };      

不采用匿名方法時如下:

Mydelegate de1 = new Mydelegate(show);      

匿名方法的極緻就是Lamda表達式,即不聲明方法名稱,直接用括号來表示入口參數。如下:

delegate int Mydelegate(int a, int b);
        static void Main(string[] args)
        {
            Mydelegate gwl = (p, z) => z - (p + 10);//p,z 為參數, z - (p + 10)為傳回值
            Console.WriteLine(gwl(10, 100));   //列印80,z對應參數b,p對應參數a

            Func<int, int, bool> gwl1 = (p, z) =>
                {
                    if (p + z == 10)
                    {
                        return true;
                    }
                    else return false;
                };
            Console.WriteLine(gwl1(10, 0));      

利用委托進行異步程式設計中Lamda表達式的用法:

fun.BeginInvoke(100, "LIU", de =>
              {
                  string mes = fun.EndInvoke(de);
                  Console.WriteLine(mes);
              }, null);