首页 > 其他分享 >如何理解委托?

如何理解委托?

时间:2023-12-18 10:37:17浏览次数:21  
标签:salary 委托 int fc AfterBye height 如何 理解 static

委托是一个类,定义了方法的类型,使一个方法可以作为另一个方法的参数传递,程序具有更好的可扩展性。

举个栗子,有一家红娘机构,提供委托找对象的服务,其中有一个服务套餐叫ObjectClassDelegate,可以指定身高和收入,回去之后红娘找到了再告诉你有几个符合你的要求。

 protected delegate int ObjectClassDelegate(int height, int salary);
 static void Main()
 {
     #region Delegate自定义
     ObjectClassDelegate dele = new ObjectClassDelegate(FindObject);
     int count = AfterBye(dele,165, 15000);//传入委托以调用方法
     #endregion Delegate自定义


     #region Func 必须有返回值
     Func<int, int, int> fc = FindObject;
     int result = AfterBye(fc, 165, 15000);#endregion

     #region Action 无返回值
     Action<int, int> go_between = (height, salary) => Console.WriteLine($"我帮你留意身高{height},收入{salary}的。"); 
     AfterBye(go_between,165,15000);
     #endregion
 }

 static int AfterBye(ObjectClassDelegate fc, int height, int salary)
 {
     return fc(height, salary);
 }
 
 static int AfterBye(Func<int, int, int> fc, int height, int salary)
 {
     return fc(height, salary);
 }

 static void AfterBye(Action<int, int> findObject, int height, int salary)
 {
     findObject(height, salary);
 }

 static int FindObject(int height, int salary)
 {
     if (height >= 160 && height <= 165 && salary > 15000)
     {
         return 2;
     }
     else if (height > 165 && height <= 170 && salary > 15000)
     {
         return 1;
     }
     else
     {
         return 0;
     }
 }

 

标签:salary,委托,int,fc,AfterBye,height,如何,理解,static
From: https://www.cnblogs.com/GZ-Blog/p/17903857.html

相关文章

  • C#如何实现文件上传与下载
    这篇文章主要介绍C#如何实现文件上传与下载,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C#实现文件上传代码: public ActionResult Upload()    {      // var pathUrl = "http://" + Request.Url.Authority;      var file ......
  • 如何快速优化几千万数据量的订单表
    前言为了保证有一个更健康的身体,所以慢慢降低了更新频率,在有了更多休息时间的前提下,思考了一下接下来准备分享的一些内容。决定在更新一些技术干货的同时,会穿插一些架构知识,放在单独的专栏里面,希望大家能喜欢,里面包含了这些年工作中遇到的一些内容,以及自己充电后总结的一些知识,......
  • JVS低代码流程引擎,在业务管理界面如何发起流程?
    在业务管理的场景下,存在先做了对应的数据管理,后续增加管理的规范度,“在业务数据变化时发起流程”的需求,那么这种情况下就需要在业务管理(列表页、表单)中发起流程,让业务模型使用流程配置,通常在具体业务场景下触发事件启动流程,业务场景涉及具体列表页、表单页模型数据。示例:通过列表页......
  • 企业做软件测试,如何少花冤枉钱
    市场竞争压力使得专注某一项核心业务的企业成为了市场上的刚需,很多企业会在管理系统实施过程中,将业务外包给相应专业该项业务的外包公司,可以有效节省企业人力物力成本,有利于高效管理。软件测试行业同样也有外包公司,一般的软件企业较注重软件开发,因此在软件测试上趋于弱势,这时候软件......
  • k8s的service和ep是如何关联和相互影响的
    1、ephemeralstorage是k8s1.8引入的特性,用作限制临时存储,可为Pod的每个容器单独配置。2、它包括四个方面:EmptyDievolumes、Containerlogs、imagelayers和containerwritablelayers。注:容器可写层即向容器内写入文件时占用的存储。3、当任意一个容器超过限制,或整个Pod超过限......
  • python迭代器理解
    目录什么是迭代器?为什么要有迭代?迭代器的优缺点什么是可迭代对象?什么是迭代器对象呢?什么是迭代器?在学习for循环的时候,听到了一个词叫可迭代对象。那什么是可迭代对象?了解后又知道了迭代,可迭代,迭代器这些名词,那这些到底是什么意思呢?我们先知道为什么for循环不像whlie循环一样,使......
  • Unity3D 如何制作带厚度的透明图片详解
    Unity3D是一款功能强大的游戏开发引擎,可以实现各种复杂的游戏效果。本文将详细介绍如何使用Unity3D制作带厚度的透明图片,并提供代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。在Unity3D中,......
  • Unity3D 关于过大的UI帧动画如何处理详解
    Unity3D是一款流行的游戏开发引擎,它可以用来创建各种类型的游戏,包括2D和3D游戏。在游戏中,UI帧动画是一个常见的元素,它可以增加游戏的交互性和视觉效果。然而,当UI帧动画过大时,可能会导致游戏的性能下降和卡顿现象。本文将详细介绍如何处理过大的UI帧动画,并给出相应的技术详解和代码......
  • 对ThreadLocal的理解
    1.ThreadLocal概述ThreadLocal是多线程中对于解决线程安全的一个操作类,它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal同时实现了线程内的资源共享案例:使用JDBC操作数据库时,会将每一个线程的Connection放入各自的ThreadLocal中,从而保证每......
  • matlab如何写一个类
    类是一种数据类型,与普通的数据类型不同的是类不仅包含数据,还包含对数据的操作,类把数据和数据操作方法封装在一起,作为一个整体参与程序的运行。类具有可继承性,创建一个新的类的时候,可以在一个基类中添加成员派生出新类。类的变量和类的实例是不同的,类的实例是动态分配的内存区域,通......