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

C#练习题——匿名方法与闭包实战:函数式编程的优雅实现

一、任务:写一个函数传入一个整数,返回一个函数

(1)之后执行这个匿名函数时传入一个整数和之前那个函数传入的数相乘
(2)返回(1)的结果


二、核心代码解析

1. 工厂方法 - DealWith

public static Action<int> DealWith(int num)
{return delegate (int num2) {Console.WriteLine("{0}和{1}相乘的结果为{2}", num, num2, num * num2);};
}
  • 返回一个Action<int>委托类型

  • 使用匿名方法delegate (int num2)创建委托实例

  • 闭包机制:匿名方法捕获了外部参数num

2. 使用方式

Action<int> action = DealWith(3);  // 创建固定乘数为3的乘法器
action(5);  // 计算 3 × 5 = 15

三、闭包机制深度解析

1.闭包的本质

// num 被匿名方法"捕获" - 这就是闭包
delegate (int num2) {Console.WriteLine("{0}和{1}相乘的结果为{2}", num, num2, num * num2);// ↑ 这里的num来自外部作用域,被自动"记住"了
};

2.闭包的生命周期

  1. 调用DealWith(3)时,参数num=3进入作用域

  2. 匿名方法捕获这个num

  3. 即使DealWith方法执行完毕,num=3仍然被匿名方法持有

  4. action委托长期保持对num=3的引用


四、完整代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;namespace 进阶测试
{class Program{public static Action<int> DealWith(int num){return delegate (int num2) {Console.WriteLine("{0}和{1}相乘的结果为{2}", num, num2,num * num2);};}static void Main(string[] args){Action<int> action = DealWith(3);action(5);}}
}
http://www.dtcms.com/a/399622.html

相关文章:

  • 西安有哪些网站设计公司seo排名优化推广报价
  • 深圳安鸿源建设网站上海网站建站建设服务
  • H3C 三层VLAN路由实验
  • 深圳做购物网站小米发布会8月
  • 【GPT入门】第71课 autogen介绍与代码实现股票分析汇报多智能体
  • 网页源码 html源码网站 网页源代码模板
  • 北京网站优化前景集团网站策划方案
  • 怎么打帮人做网站开发的广告常熟市住房建设局网站
  • 深度学习(6)pytorch
  • 函数(Num008)
  • MySQL8.0版本在Windows下进行安装
  • 站长seo工具图文素材库免费
  • 前端核心框架vue之(指令篇1/5)
  • 山东小语种网站建设免费高清视频素材app哪里找
  • 嵌入式Python环境深度解读与精益裁剪指南
  • 如何排查Windows事件ID 7000 服务启动失败
  • Java面试题大全1000+面试题附答案详解
  • LangChain:LLMs和ChatModels介绍、LangChain 集成大模型的本地部署与 API 调用实践、提示词prompt、输出解析器、链
  • spring中手动事务控制(提交、回滚事务)
  • 高端医疗网站开发用广州seo推广获精准访问量
  • 如何让本地使用 Ollama 部署的开源大模型(LLM)识别图片和 Excel 文件
  • 高低温试验有哪些类型?委托第三方做高低温试验的流程
  • print!/println!宏详解
  • 谢岗镇仿做网站经营性商务网站建设需要备案吗
  • 崂山区建设局网站郑州付费系统网站开发建设
  • xxl-job 执行器在 host 网络模式下注册到错误 IP 的问题与解决方案
  • 网站建站 seowordpress防止机器人注册
  • 网站建设需要服务器支持 吗营销活动
  • Python学习笔记:正则表达式
  • In VI, when an arrow key is pressed, a character (e.g. “A“) is sent.