程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

面向对象特性(17)-- Lambda(面向对象特性有哪些?怎么理解这些特性?)

balukai 2025-06-03 20:19:29 文章精选 6 ℃

1什么是Lambda

"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。

基本上所有的面向对象语言都有Lambda函数,这里简单的以C#为例子

2、Lambda的格式

2.1简单格式

XX   =>  XXX
  • 所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。
  • Lambda运算符的左边是输入参数(如果有)右边是表达式或语句块
  • Lambda表达式x => x * x读作"x goes to x times x"。形如(参数)=>{操作}。

2.2不同参数的Lambda

(1)不同参数Lambda的格式如下图所示

(2)无参数

() =>{return "1"; };

等同于

string getnum(){ return "1"; }

(3)有两个参数

(p1, p2) =>{ return p1*p2;};

等同于

int mul(p1, p2) { return p1*p2;};

3、Lambda和委托

3.1原始委托用法

(1)根据委托的定义,简单描述的例子如下所示

class Demo
{
    delegate void DemoDelegate(string m_str1,int i);

    static void Chen_tes1(string m_str,int i)
    {
        Console.WriteLine("原始格式1: "+m_str);
    }

    static void Main(string[] args)
    {
        DemoDelegate demoDelegate = new DemoDelegate(Chen_tes1);
        demoDelegate.Invoke("chen", 1);
    }
}

输出为:

3.2不停简化的委托格式

class Demo
{
    delegate void DemoDelegate(string m_str1, int i);

    static void Chen_tes1(string m_str, int i)
    {
        Console.WriteLine("原始格式: " + m_str);
    }

    static void Main(string[] args)
    {
        //(1)最原始
        DemoDelegate demoDelegate1 = new DemoDelegate(Chen_tes1);
        //(2)简化1--去除void Chen_tes1函数定义
        DemoDelegate demoDelegate2 = new DemoDelegate(
            delegate (string m_str, int i) {Console.WriteLine("简化格式1: " + m_str);}
        );
        //(3)简化2--去除 new DemoDelegate
        DemoDelegate demoDelegate3 = delegate (string m_str, int i) { Console.WriteLine("简化格式2: " + m_str); };
         //(4)简化3--delegate去掉后,换上了一个符号“=>”,读作:goes to
        DemoDelegate demoDelegate4 = (string m_str, int i) =>{ Console.WriteLine("简化格式3: " + m_str); };
        //(5)简化4--因为与委托类型是一一对应关系,所以直接去掉参数类型名称
        DemoDelegate demoDelegate5 = (m_str, i) => { Console.WriteLine("简化格式4: " + m_str); };
        //(6)简化5--只有一行代码,花括号{}去掉
        DemoDelegate demoDelegate6 = (m_str, i) =>  Console.WriteLine("简化格式5: " + m_str); 

        demoDelegate1.Invoke("chen", 1);
        demoDelegate2.Invoke("chen", 1);
        demoDelegate3.Invoke("chen", 1);
        demoDelegate4.Invoke("chen", 1);
        demoDelegate5.Invoke("chen", 1);
        demoDelegate6.Invoke("chen", 1);
    }
}

运行结果

最近发表
标签列表