C# λ运算符=>匿名方法 lambda表达式

本文介绍了C#中的Lambda表达式这一特性,包括其语法结构、如何定义及使用Lambda表达式来实现委托的方法等。通过具体的代码示例,展示了不同参数数量的Lambda表达式的写法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lambda 表达式是一个匿名函数,是C# 3.0引入的新特性。Lambda 运算符=>,该运算符读为“goes to”。C#为委托提供一种机制,可以为委托定义匿名方

法,匿名方法没有名称,编译器会定指定一个名称。匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部。也不能在匿名方法外部

使用的ref和out参数。


下面的代码简单的演示了Lambda表达式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions; //using

namespace Lambda
{
    class Program
    {
        //委托方法
        delegate string MyDelagate(string val);

        static void Main(string[] args)
        {
            string str1 = "匿名方法外部\n";

            //中括号部分定义了一个方法,没有名称,编译器会自动指定一个名称  
            MyDelagate my = (string param) =>
            {
                string str2 = "匿名方法内部\n";
                return(param + str1 + str2);
            };

            //调用委托的匿名方法  
            Console.WriteLine(my("参数\n"));

            //从结果可以看到,匿名方法同样达到了为委托定义实现体方法的效果  
            Console.Read();
        }  
    }
}

λ运算符 =>

左边是参数,使用括号表达 (string param),

右边是实现代码,使用花括号,如果代码只有一行,则不使用花括号和return关键字也可以,编译器会为我们添加。

这是λ表达式的简单实现:

string str1 = " 匿名方法外部 ";
string str2 = " 匿名方法内部 ";
MyDelagate my = param => param + str1 + str2;
Console.WriteLine(my(" 参数 "));

1个参数:

private delegate int MyDelagate(int i);

MyDelagate test1 = x => x * x;
MyDelagate test2 = (x) => x * x;
MyDelagate test3 = (int x) => x * x;
MyDelagate test4 = (int x) => { return x * x; };

Console.WriteLine(test1(10));
Console.WriteLine(test2(10));
Console.WriteLine(test3(10));
Console.WriteLine(test4(10));

2个或多个参数:两个或者多个参数不能使用简略的方式书写,必须使用小括号声明参数。

private delegate int MyDelagate(int x, int y);

MyDelagate test1 = (x, y) => x * y;
MyDelagate test2 = (int x, int y) => x * y;
MyDelagate test3 = (int x, int y) => { return x * y; };

Console.WriteLine(test1(3,4));
Console.WriteLine(test2(3,4));
Console.WriteLine(test3(3,4));

无参数:

 private delegate void Void();       

 void test11 = () => { Console.WriteLine("Void Params"); };
 test11();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

郎涯技术

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

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

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

打赏作者

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

抵扣说明:

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

余额充值