.net Lambda表達式


   最近看架構師用Lambda表達式很舒服,很簡潔,於是抽空看了下,其實很簡單的

  目錄:

    1.匿名方法

    2.匿名方法與Lambda區別

    3.使用Lambda表達式

  開始學習啦。。。。。。。

   一,匿名方法

         有些方法很少被委托以外的任何程序調用,從生產效率來講,手工定義一個這樣的方法有點繁瑣,不是很受歡迎,為了解決這個

     情況。現在可以在事件注冊時直接將一個委托與一段代碼相關聯,這種代碼的正式名稱為匿名方法。

      示例:

            List<int> list = new List<int>();
            list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });

             List<int> evenNumber = list.FindAll(delegate(int i)
            {
               return (i % 2) == 0;
            });

   二,匿名方法與Lambda區別

         C#支持內聯處理事件,通過直接把一段代碼語句賦給事件(使用匿名方法),而不是構建被低層委托調用的獨立方法,Lambda表

     達式只是用更簡潔的方式來寫匿名方法,徹底簡化了對委托類型的使用。

  三,使用Lambda表達式

         由於該表達式過於簡單,所以直接奉上示例:

Lambda表達式示例
namespace LambdaTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Lambda表達式測試
            TraditionalDelegateSyntax();

            Console.Read();

        }

        static void TraditionalDelegateSyntax()
        {
            List<int> list = new List<int>();
            list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });


            //方法一,定義相同類型的委托實例,作為傳遞參數
            //Predicate<int> anonymousFun = new Predicate<int>(IsEvenNumber);

            //方法二,Predicate<int>委托接受一個同樣簽名的函數
            //List<int> evenNumber = list.FindAll(IsEvenNumber);

            //方法三,匿名函數的方式 支持C#內聯處理事件
            //List<int> evenNumber = list.FindAll(delegate(int i)
            //{
            //    return (i % 2) == 0;
            //});


            //方法四,Lambda表達式 比匿名函數更簡潔
            //lamdba表達式的語法 (參數1,參數2,...)=>{處理語句} 如果沒有參數表達式則為:()=>{處理語句}
            List<int> evenNumber = list.FindAll(i => (i % 2) == 0);


            //方法2輔助
            //Predicate<int> anonymousFun=IsEvenNumber;
            //List<int> evenNumber = list.FindAll(anonymousFun);

            foreach (var number in evenNumber)
            {
                Console.WriteLine(number);
            }
        }

        static bool IsEvenNumber(int i)
        {
            return (i%2)==0;
        }

    }
}

 

       


免責聲明!

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



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