首页 > 编程语言 >C# Delegate 委托

C# Delegate 委托

时间:2023-06-12 14:55:17浏览次数:36  
标签:zuoCaiDelegate 委托 ZuoCai C# void zuoCai Delegate 配菜 public

什么是委托?

可以把委托看成是用来执行方法(函数)的一个“指针” 通俗的说就是:通过委托,我们可以把方法当成参数传递。

示例

    举个例子:“设想,如果我们写了一个厨师做菜的方法,里面有拿菜、切菜、配菜、炒菜四个步骤,但编写此方法代码的人想让配菜这个环节让调用方法的人来实现,换句话说,就是想把方法作为参数来传递,那么怎么来实现呢?

拿菜、切菜、配菜、炒菜我们定义4个方法,抽象成一个做菜类(ZuoCai.cs)。

ZuoCai zuoCai = new ZuoCai();
ZuoCai.ZuoCaiDelegate zuoCaiDelegate = new ZuoCai.ZuoCaiDelegate(zuoCai.NaCai);
zuoCaiDelegate += zuoCai.QieCai;
zuoCaiDelegate += zuoCai.PeiCaiJiaLa;
zuoCaiDelegate += zuoCai.ChaoCai;
zuoCai.StartZuoCai(zuoCaiDelegate);

public class ZuoCai
{
public delegate void ZuoCaiDelegate();
public void NaCai()
{
Console.WriteLine("A负责拿菜!");
}

public void QieCai()
{
Console.WriteLine("B负责切菜!");
}

public void PeiCai()
{
Console.WriteLine("C负责配菜!");
}

public void PeiCaiJiaLa() { Console.WriteLine("C负责配菜,要求多放点辣椒!"); }

public void ChaoCai()
{
Console.WriteLine("D负责炒菜!");
}

/// <summary>
/// 开始做菜的方法
/// </summary>
/// <param name="zuoCaiDelegate"></param>
public void StartZuoCai(ZuoCaiDelegate zuoCaiDelegate)
{
zuoCaiDelegate();
}
}

 

原文:https://blog.csdn.net/qq_36330228/article/details/107449807?ops_request_misc=&request_id=5aecec1f548948f6a6cd3e2f94161f08&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-1-107449807-null-null.268^v1^control&utm_term=Delegate&spm=1018.2226.3001.4450

标签:zuoCaiDelegate,委托,ZuoCai,C#,void,zuoCai,Delegate,配菜,public
From: https://www.cnblogs.com/KevinSteven/p/17475021.html

相关文章

  • 导出excel带图片
    packagecom.gooinfo.spareParts.util;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;importorg.apache.poi.hssf.usermodel.HSSFDataValidation;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.poifs.filesyst......
  • 目录-理解ASP.NET Core
    《理解ASP.NETCore》基于.NET5&.NET6进行整理,旨在帮助大家能够对.NET&ASP.NETCore框架有一个清晰的认识。目录Startup中间件(Middleware)依赖注入(DependencyInjection)主机(Host)配置(Configuration)选项(Options)路由(Routing)文件服务器(FileServer)日......
  • 告警:线上慎用 BigDecimal !
    来源:cnblogs.com/zhangyinhua/p/11545305.html一、BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些......
  • PostgreSQL技术大讲堂 - 第18讲:Tuning Autovacuum
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。Part18:Vacuum空间管理工具内容1:什么是autovacuum?内容2:为什......
  • KingbaseES数据库改写SQL Server数据库CROSS APPLY和OUTER APPLY
     一、功能介绍:CROSSAPPLY和OUTERAPPLY是SQLServer中的一种连接操作,类似于JOIN语句可以将一张表与一个表函数或一个子查询进行关联。表函数是一种返回一个表类型的数据的函数,子查询是一个嵌套在外部查询中的查询。它们可以与表值函数或子查询配合使用,返回左表和右表的匹配结......
  • papamelon 344. 奶牛展览 Cow Exhibition(挑战程序设计竞赛) dp
    地址https://www.papamelon.com/problem/344贝西有权选择让哪些奶牛参加展览。由于负的智商或情商会造成负面效果,所以贝西不希望出展奶牛的智商之和小于零,或情商之和小于零。满足这两个条件下,她希望出展奶牛的智商与情商之和越大越好,请帮助贝西求出这个最大值。输入第一行:......
  • CodeForces 4B Before an Exam(DP)
    思路:令dp[i][j]为做了i天用了j时间,然后随便转移一下就可以了#include<cstdio>#include<queue>#include<cstring>#include<iostream>#include<cstdlib>#include<algorithm>#include<vector>#include<map>#include<string>#......
  • POJ 3264 Balanced Lineup
    思路:线段树求最大值减最小值,每个结点分别维护最大值和最小值即可。#include<cstdio>#include<queue>#include<cstring>#include<iostream>#include<cstdlib>#include<algorithm>#include<vector>#include<map>#include<string>#in......
  • PROXMOX创建CEPH笔记
    1、准备工作集群内各主机一定要先做校时,保证各节点时间一致,要么安装ntpdate,要么安装chrony(建议使用这个,实现自动校时)可参考文章: https://blog.csdn.net/wylfengyujiancheng/article/details/88298708 https://blog.csdn.net/m0_47476627/article/details/1260037912、创......
  • CodeForces 4D Mysterious Present(DP)
    题意:你有一张长宽为x,y的卡片同时有n个盒子,长宽分别为xi,yi。然后问你卡片最多塞多少层盒子并且把这些盒子按照从里到外输出。思路:由于数据给小了,所以n^2的DP也是可以水过的~#include<iostream>#include<cstdio>usingnamespacestd;constintmaxn=5005;intx[maxn],y[maxn]......