C# Lambda 表达式

Lambda 表达式

Ch 01 Intro

在了解Lambda表达式之前,先来了解一下委托匿名方法

Ch 02 委托(delegate)

  • 是存有对某个方法的引用方法名)的一种引用类型变量,应用可以在运行时改变
  • C#实现回调函数的一种机制。
  • 用于引用与其具有相同标签返回值、参数列表)的方法。

eg.

using System;

//01 创建一个委托
delegate int Mydelegate(int num1, int num2);
namespace Lambda
{
    class DelegateDemo
    {
        static void Main(string [] args)
        {
            //02 委托实例化——调用静态方法
            Mydelegate mydelegate = new Mydelegate(Add);
            //03 调用
            Console.WriteLine(mydelegate(7, 11));

            //委托实例化——调用实例方法
            DelegateDemo delegateDemo = new DelegateDemo();
            mydelegate = new Mydelegate(delegateDemo.Mul);
            //调用
            Console.WriteLine(mydelegate(6, 3));
        }

        static int Add(int n1, int n2)
        {
            return n1 + n2;
        }

        int Mul(int n1, int n2)
        {
            return n1 * n2;
        }
    }
}

Ch 03 匿名方法(Anonymous methods)

  • 委托是通过传递函数引用进行委托的技术,而匿名方法则是传递代码块作为委托参数的技术。
  • 匿名方法是没有名称,只有主体的方法。
  • 在匿名方法中不需要指定返回值,由方法主体中的return语句进行推断。

eg.

using System;

//创建委托
delegate int Mydelegate(int n1, int n2);
namespace Lambda
{
    class DelegateDemo
    {
        
        static void Main(string [] args)
        {
            //委托匿名方法
            Mydelegate md = delegate (int n1, int n2)
            {
                return n1 + n2;
            };
            Console.WriteLine(md(3, 8));
            //委托静态方法
            md = new Mydelegate(Add);
            Console.WriteLine(md(3, 8));
            //委托实例方法
            md = new Mydelegate((new DelegateDemo()).Mul);
            Console.WriteLine(md(3,8));
        }

        static int Add(int n1, int n2)
        {
            return n1 + n2;
        }

        int Mul(int n1, int n2)
        {
            return n1 * n2;
        }
    }
}

Ch 04 Lambda表达式

4.1 => 运算符

  1. Lambda运算符
    • 输入参数 => 表达式
    • 输入参数 => 语句块
  2. 表达式主体定义:表示return的缩写

4.2 Lambda

类似鱼函数式编程。

eg.

using System;

//创建
delegate int Mydelegate(int n1, int n2);
namespace Lambda
{
    class DelegateDemo
    {  
        static void Main(string [] args)
        {
            //使用lambda表达式
            Mydelegate md = (x, y) => x + y;
            Console.WriteLine(md(10, 7));
        }
    }
}

4.3 Func<T, TResult>委托

带返回值的泛型类型的委托。

//Func委托 最后一个参数是返回值类型
Func<int, int, int, int> md = (x, y, z) => x * y * z;
Console.WriteLine(md(1,2,3));

4.4 Action<T1, T2>委托

不带返回值。

Action<int, int, int> ac = (x, y, z) =>
{
    Console.WriteLine(x + y + z);
};
ac(2,4,6);

4.5 表达式树

待更

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值