C# “Lamda表达式”知识点,代码记录

这里讲了Lamda表达式的其中两种用法,委托与集合。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lamda表达式 {

    public delegate void DelOne();
    public delegate void DelTwo(string name);
    public delegate string DelThree(string name);

    class Program {
        static void Main(string[] args) {
            // 注释部分是匿名函数
            DelOne delOne = () => { }; //delegate () { };   
            DelTwo delTwo = (string name) => { }; //delegate (string name) { };
            DelThree delThree = (string name) => { return name; }; //delegate (string name) { return name; };
            // 匿名函数和Lamda表达式本质上是一样的



            // Lamda表达式的另一种用法
            List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            // 使用Lamda表达式表示集合大于4的所有元素(n是随遍取的)
            list.RemoveAll(n => n > 4); // 移除集合中所有大于4的元素

            foreach (int values in list) {
                Console.WriteLine(values);
            }


            Console.ReadKey();
        }
    }
}

运行截图:在这里插入图片描述


补充:

  1. Lambada表达式最常用的用法

    new一个委托实例,然后在括号中初始化Lambda表达式。

    // Lambada表达式最常用的用法
    Func<int, int, int> func1 = new Func<int, int, int>((int a, int b) 	=> { return a + b; });
    Console.WriteLine(func1.Invoke(1, 2));
    
  2. Lambda表达式简化版

    不需要new,直接将Lambda表达式赋值给委托

    // Lambda表达式简化版
    Func<int, int, int> func2 = (int x, int y) => { return x - y; };
    Console.WriteLine(func2.Invoke(2, 1));
    
  3. Lambda表达式极简版(省略参数类型)

    // Lambda表达式极简版(省略参数类型)
    Func<int, int, int> func3 = (i, j) => { return i * j; };
    Console.WriteLine(func3.Invoke(1, 2));
    

    因为这里试用到了系统的泛型委托,所以他会自动识别。

运行截图:
在这里插入图片描述


Lambda表达式-泛型委托的高级用法

// Lambda表达式-泛型委托的高级用法
static T AdvancedUsage<T> (Func<T, T, T> func, T a, T b) {
	T divide = func.Invoke(a, b);

	return divide;
}

将泛型委托作为参数传进去,调用时,使用Lambda表达式进行传参。

main函数中调用:

// Lambda表达式-泛型委托的高级用法
int res = AdvancedUsage((a, b) => { return a / b; }, 10, 2);
Console.WriteLine("结果:{0}", res);

在这里插入图片描述

全部代码展示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _Lambda {
    class __Lambda {
        static void Main(string[] args) {

            // Lambada表达式最常用的用法
            Func<int, int, int> func1 = new Func<int, int, int>((int a, int b) => { return a + b; });
            Console.WriteLine(func1.Invoke(1, 2));


            // Lambda表达式简化版
            Func<int, int, int> func2 = (int x, int y) => { return x - y; };
            Console.WriteLine(func2.Invoke(2, 1));


            // Lambda表达式极简版(省略参数类型)
            Func<int, int, int> func3 = (i, j) => { return i * j; };
            Console.WriteLine(func3.Invoke(1, 2));


            // Lambda表达式-泛型委托的高级用法
            int res = AdvancedUsage((a, b) => { return a / b; }, 10, 2);
            Console.WriteLine("结果:{0}", res);

            Console.ReadKey();
        }



        // Lambda表达式-泛型委托的高级用法
        static T AdvancedUsage<T> (Func<T, T, T> func, T a, T b) {
            T divide = func.Invoke(a, b);

            return divide;
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpp_learners

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值