当前位置: 首页 > article >正文

c# lambda表达式基础语法

Lambda 表达式基础

Lambda 表达式是一种简洁的定义匿名函数的方式。它们通常用于需要传递函数作为参数或返回值的场景。

Action 委托

Action 和 Action<T> 是 .NET 中预定义的委托类型,用于表示没有返回值的方法。

  1. 没有参数列表的 Action

    Action a1 = () =>
    {
    Console.WriteLine("没有参数列表");
    };
    a1();
    • Action:表示没有参数且没有返回值的方法。
    • () => { ... }:这是一个没有参数的 Lambda 表达式。
    • a1():调用这个 Lambda 表达式。
  2. 带一个参数的 Action<T>

    Action<int> a2 = (value) =>
    {
    Console.WriteLine(value);
    };
    a2(10);
    • Action<int>:表示带一个 int 类型参数且没有返回值的方法。
    • (value) => { ... }:这是一个带一个参数的 Lambda 表达式,参数名为 value
    • a2(10):传递 10 作为参数调用这个 Lambda 表达式。

Func 委托

Func<T, TResult> 是 .NET 中预定义的委托类型,用于表示有返回值的方法。

  1. 带一个参数并返回值的 Func<T, TResult>

    Func<string, int> a3 = (value) =>
    {
    Console.WriteLine(value);
    return 1;
    };
    Console.WriteLine(a3("hello"));
    • Func<string, int>:表示带一个 string 类型参数并返回一个 int 类型结果的方法。
    • (value) => { ... }:这是一个带一个参数的 Lambda 表达式,参数名为 value,并且它返回一个 int 类型的值。
    • Console.WriteLine(a3("hello")):传递 "hello" 作为参数调用这个 Lambda 表达式,并打印返回值。

关键点总结

  • Lambda 表达式的语法(parameters) => { statements } 或 (parameters) => expression
    • parameters:参数列表,可以没有参数,也可以有一个或多个参数。
    • { statements }:语句块,包含要执行的代码。
    • expression:一个表达式,其值将作为 Lambda 表达式的返回值(如果 Lambda 表达式有返回值)。
  • 委托:委托是一种引用类型,用于表示对某个静态方法或实例方法的引用。Action 和 Func 是 .NET 中常用的委托类型。
    • Action:表示没有返回值的方法。
    • Func:表示有返回值的方法。
  • 调用委托:一旦将 Lambda 表达式赋值给委托变量,就可以像调用普通方法一样调用这个委托变量。

通过这段代码,您可以看到 Lambda 表达式和委托在 C# 编程中的实际应用,它们使得代码更加简洁和灵活。

完整代码

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

namespace _1.lambda表达式
{
    class Program
    {
        static void Main(string[] args)
        {

            Action a1 = () =>
            {
                Console.WriteLine("没有参数列表");
            };
            a1();

            Action<int> a2 = (value) =>
            {
                Console.WriteLine(value);
            };
            a2(10);

            Func<string,int> a3 = (value) =>
            {
                Console.WriteLine(value);

                return 1;
            };
            Console.WriteLine(a3("hello"));
        }
    }
}

 


http://www.kler.cn/news/364500.html

相关文章:

  • Docker入门之构建
  • 微信小程序绘制轨迹
  • Leetcode 最长公共前缀
  • (3) c++基本代码
  • Gitlab 完全卸载–亲测可行
  • 力扣80:删除有序数组中重复项
  • java基础day04:方法(函数),练习
  • Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题
  • 一个vue3的待办列表组件
  • 【如何使用git将自己注释不上传到git服务器】
  • 博客搭建之路:hexo搜索引擎收录
  • pyflink 时序异常检测——PEWMA
  • 漏洞挖掘 | 记一次逻辑漏洞修改任意用户密码
  • 从0到1实现你自己的AI Chat应用
  • 密码学----RSA算法
  • Higress 云原生网关
  • JVM监控与调优工具
  • RabbitMQ最新版本4.0.2在Windows下的安装及使用
  • mac中按照官网教程安装了 pgsql 报错 command not found: psql
  • Java项目编译不通过,IDEA无法运行或调试Unit test类
  • 移动开发(四):.NET MAUI中Android应用修改安装图标和启动页面
  • EasyExcel_动态表头的导入导出
  • 非强化学习的对齐方法
  • 稳啦!掌握缓存一致性与失效预防措施——使用缓存不可或缺的指南!
  • MQL实验(二)作业
  • 【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析