最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中Lambda表達式的用法

 更新時間:2022年05月16日 09:47:01   作者:springsnow  
這篇文章介紹了C#中Lambda表達式的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、介紹

1、"Lambda表達式"是一個特殊的匿名函數(shù),簡化了匿名委托的使用,是一種高效的類似于函數(shù)式編程的表達式,Lambda簡化了開發(fā)中需要編寫的代碼量。

2、它可以包含表達式和語句,并且可用于創(chuàng)建委托或表達式目錄樹類型,支持帶有可綁定到委托或表達式樹的輸入?yún)?shù)的內(nèi)聯(lián)表達式。

3、所有Lambda表達式都使用Lambda運算符=>,該運算符讀作"goes to"。Lambda運算符的左邊是輸入?yún)?shù)(如果有),右邊是表達式或語句塊。Lambda表達式x => x * x讀作"x goes to x times x"。

4、Lambda表達式語法:

  • 無參數(shù):()=>expr             
  • 一個參數(shù):param=>expr
  • 多個參數(shù):(param-list)=>expr

注意點:如果方法體內(nèi)只有一句代碼,可以省略代碼塊符號,也就是不用寫{ }

二、舉例:

1、 委托實例方式

        //委托  逛超市
        delegate int GuangChaoshi(int a);
        static void Main(string[] args)
        {
            GuangChaoshi gwl = JieZhang;
            Console.WriteLine(gwl(10) + "");   //打印20,委托的應(yīng)用
            Console.ReadKey();
        }
        
        //結(jié)賬
        public static int JieZhang(int a)
        {
            return a + 10;
        }

2、lambda表達式

//委托  逛超市
        delegate int GuangChaoshi(int a);
        static void Main(string[] args)
        {          
           // GuangChaoshi gwl = JieZhang;
            GuangChaoshi 
gwl
 = 
p => p + 10
;
            Console.WriteLine(
gwl(10)
 + "");   //打印20,表達式的應(yīng)用
            Console.ReadKey();
        }

3、多參數(shù)

        //委托  逛超市
        delegate int GuangChaoshi(int a,int b);
        static void Main(string[] args)
        {            
            GuangChaoshi gwl = (p,z) => z-(p + 10);
            Console.WriteLine(gwl(10,100) + "");   //打印80,z對應(yīng)參數(shù)b,p對應(yīng)參數(shù)a
            Console.ReadKey();
        }

三、內(nèi)置委托

1、集合操作

    public class Person
    {
        public string Name { get; set; }
        public int Age  {  get;set; }    
    }
    class Program
    {

        public static List<Person> PersonsList()
        {
            List<Person> persons = new List<Person>();
            for (int i = 0; i < 7; i++)
            {
                Person p = new Person() { Name = i + "兒子", Age = 8 - i, };
                persons.Add(p);                
            }
            return persons;
        }

        static void Main(string[] args)
        {
            List<Person> persons = PersonsList();
            persons = persons.Where(p => p.Age > 6).ToList();       //所有Age>6的Person的集合
            Person per = persons.SingleOrDefault(p => p.Age == 1);  //Age=1的單個people類
            persons = persons.Where(p => p.Name.Contains("兒子")).ToList();   //所有Name包含兒子的Person的集合
        }
    }

2、Func<T>委托

        static void Main(string[] args)
        {
            Func<int, int, bool> gwl = (p, j) =>
                {
                    if (p + j == 10)
                    {
                        return true;
                    }
                    return false;
                };
            Console.WriteLine(gwl(5,5) + "");   //打印‘True',z對應(yīng)參數(shù)b,p對應(yīng)參數(shù)a
            Console.ReadKey();
        }

四、lambda表達式樹動態(tài)創(chuàng)建方法

        static void Main(string[] args)
        {
            //i*j+w*x
            ParameterExpression a = Expression.Parameter(typeof(int),"i");   //創(chuàng)建一個表達式樹中的參數(shù),作為一個節(jié)點,這里是最下層的節(jié)點
            ParameterExpression b = Expression.Parameter(typeof(int),"j");
            BinaryExpression be = Expression.Multiply(a,b);    //這里i*j,生成表達式樹中的一個節(jié)點,比上面節(jié)點高一級

            ParameterExpression c = Expression.Parameter(typeof(int), "w");
            ParameterExpression d = Expression.Parameter(typeof(int), "x");
            BinaryExpression be1 = Expression.Multiply(c, d);

            BinaryExpression su = Expression.Add(be,be1);   //運算兩個中級節(jié)點,產(chǎn)生終結(jié)點

            Expression<Func<int, int, int, int, int>> lambda = Expression.Lambda<Func<int, int, int, int, int>>(su,a,b,c,d);

            Console.WriteLine(lambda + "");   //打印‘(i,j,w,x)=>((i*j)+(w*x))',z對應(yīng)參數(shù)b,p對應(yīng)參數(shù)a

            Func<int, int, int, int, int> f= lambda.Compile();  //將表達式樹描述的lambda表達式,編譯為可執(zhí)行代碼,并生成該lambda表達式的委托;

            Console.WriteLine(f(1, 1, 1, 1) + "");  //打印2
            Console.ReadKey();
        }

到此這篇關(guān)于C#中Lambda表達式的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#編程:List.ForEach與foreach循環(huán)的對比分析

    C#編程:List.ForEach與foreach循環(huán)的對比分析

    這篇文章主要介紹了C#編程:List.ForEach與foreach循環(huán)的對比分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C#反射應(yīng)用實例

    C#反射應(yīng)用實例

    這篇文章主要介紹了C#反射應(yīng)用,實例分析了通過反射實現(xiàn)多系統(tǒng)數(shù)據(jù)庫的配置方法,是比較實用的技巧,需要的朋友可以參考下
    2014-12-12
  • C#實現(xiàn)炫酷啟動圖-動態(tài)進度條效果

    C#實現(xiàn)炫酷啟動圖-動態(tài)進度條效果

    這篇文章主要介紹了基于C#實現(xiàn)炫酷啟動圖-動態(tài)進度條 效果,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • C#中BackgroundWorker類用法總結(jié)

    C#中BackgroundWorker類用法總結(jié)

    本文詳細講解了C#中BackgroundWorker類用法總結(jié),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C#實現(xiàn)簡單的計算器功能(窗體)

    C#實現(xiàn)簡單的計算器功能(窗體)

    這篇文章主要為大家詳細介紹了C#實現(xiàn)簡單的計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#集合之列表的用法

    C#集合之列表的用法

    這篇文章介紹了C#集合之列表的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 基于WPF實現(xiàn)路徑圖標控件

    基于WPF實現(xiàn)路徑圖標控件

    這篇文章主要介紹了如何利用WPF實現(xiàn)路徑圖標控件,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,需要的小伙伴可以參考一下
    2023-07-07
  • C#中Equality和Identity淺析

    C#中Equality和Identity淺析

    這篇文章主要介紹了C#中Equality和Identity淺析,本文先是講解了Equality和Identity的定義,同時講解了判斷兩個對象等價性的4種方法,需要的朋友可以參考下
    2014-12-12
  • C#讀寫config配置文件的方法

    C#讀寫config配置文件的方法

    下面小編就為大家?guī)硪黄狢#讀寫config配置文件的方法。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C#新手常犯的錯誤匯總

    C#新手常犯的錯誤匯總

    這篇文章主要介紹了C#新手常犯的錯誤匯總,對于經(jīng)驗豐富的C#程序員同樣具有很好的參考借鑒價值,需要的朋友可以參考下
    2014-08-08

最新評論

赤城县| 剑阁县| 民丰县| 辽源市| 广南县| 乐昌市| 金平| 琼海市| 诏安县| 洛南县| 京山县| 个旧市| 昌都县| 略阳县| 九江市| 陆良县| 古丈县| 正定县| 黄山市| 武川县| 乌兰察布市| 虎林市| 黄山市| 景德镇市| 皮山县| 仪陇县| 宜城市| 含山县| 罗田县| 阜新| 南宫市| 平阳县| 贡山| 浦城县| 郑州市| 仙桃市| 阿鲁科尔沁旗| 分宜县| 西充县| 隆子县| 廉江市|